nginx location使用路径代理整个网站

我是在高校里,学校对外只让开放80端口

但是使用java和 python(flask)开发了网站,分别称为javawebflaskweb

想法是:

  1. tomcat7代理javaweb,使用81端口, 然后nginx反向代理tomcat的81端口到80端口
  2. flaskweb使用8001端口,将nginx的80端口下的/proxy目录反向代理flaskweb
server {
    listen 80;
    location / {
        proxy_pass http://127.0.0.1:81;
        proxy_set_header    Host    $host;
        proxy_set_header    X-Real-IP    $remote_addr;
        proxy_set_header    X-Forwarded-For    $proxy_add_x_forwarded_for;    
        proxy_set_header    X-Forwarded-Proto $scheme;
    }
    
    location /proxy {
        proxy_pass  http://127.0.0.1:8001/ ; 

        #Proxy Settings
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
        proxy_max_temp_file_size 0;
        proxy_connect_timeout 90;
        proxy_send_timeout 90;
        proxy_read_timeout 90;
        proxy_buffer_size 4k;
        proxy_buffers 4 32k;
        proxy_busy_buffers_size 64k;

   }

但是遇到的问题是:
访问 [Domain]/proxy 能到达flaskweb,但是点击链接还是 [Domain]/help.html ,还是回到了根目录 ‘/’ 下,我希望是能代理到 [Domain]/proxy/help.html 这种,请教上面的配置应该如何更改?
我算是门外汉,感觉应该是有一个专门的术语来称呼这个的,但是不是很懂。

请教各位大佬!谢谢!

阅读 4.2k
1 个回答

因为你网页中的链接 href 是 /help.html,而不是 /proxy/help.html

对于一个服务器上的多个站点,建议划分多个 server,每个 server 使用不同的域名

或者在网页 html 中使用相对路径 href="help.html",而不是 /help.html;(但不建议)

推荐问题