Nginx、proxy_pass 和 vm 后端

Nginx、proxy_pass 和 vm 后端

我的目的是让多个 Web 应用程序在不同的虚拟机上运行,​​全部通过 nginx 代理。

主要问题是 URL 发生了改变,例如 http://example.com/app1/ 进入 web 应用程序(但 CSS 没有显示)并单击“登录”时出现以下内容:http://example.com/login/

因此,我得到的是:

example.com/app1/ -> "click" -> example.com/login/

我想要的是:

example.com/app1/ -> "click" -> example.com/app1/login/

设置

虚拟机将所有传入的端口 80 流量重定向到 Nginx-VM,Webapp 在不同的 VM 上运行,例如在端口 8000 上托管自己的 Web 服务器。

文件/etc/nginx/sites-enabled/default (abbrev.)

server {
    listen 0.0.0.0:80;
    server_name example.com;
    location /app1/ {
        proxy_pass http://10.11.100.204:8080/;
    }
}

我尝试了不同的方法,例如在末尾留下斜杠proxy_pass,但是在调用 example.com/app1 时出现 404。proxy_set_header Host $host也没有起到作用。

卷曲输出

来自 Hypervisor Machine(如评论中所述):

HTTP/1.0 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 3587
Set-Cookie: session=.eJyrVorPTFGyqlZSSFKyUooM98uOCnE0jHIPLfdzcTWMcnGs8s1KrvTNysmOzEo2ijQKrfINdzXwd0m2Va rVUcrJT07MSYVrB2oDCxckpqfGZ2QWl-QXVSpZRStllJQUWOnrF5fmJCbn6-Wm5ZTmF-klZ-grxdYCABkQKVw.B4U2hw.Rbl3k3yxoLQx1UgKpP68uB_X5cI; HttpOnly; Path=/
Server: Werkzeug/0.9.6 Python/2.7.3
Date: Wed, 31 Dec 2014 07:25:59 GMT

从外部(使用外部 URL example.com/app1/):

HTTP/1.1 200 OK
Server: nginx/1.2.1
Date: Wed, 31 Dec 2014 07:35:06 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 3587
Connection: keep-alive
Set-Cookie: session=.eJyrVorPTFGyqlZSSFKyUorKDTX1C3HL8nPxNPU18suKzI008ctyyojKdTWJDEk38s31LffN8iz3C3G0VarVUcrJT07MSUVodw8FCxckpqfGZ2QWl-QXVSpZRStllJQUWOnrF5fmJCbn6-Wm5ZTmF-klZ1hZGOgrxdYCAHnCKcI.B4U4qg.IWeiafAy-VOV0vhuyUP-dlDFt5w; HttpOnly; Path=/

没有尾部斜杠“example.com/app1”

HTTP/1.1 301 Moved Permanently
Server: nginx/1.2.1
Date: Wed, 31 Dec 2014 07:29:52 GMT
Content-Type: text/html
Content-Length: 184
Location: http://example.com/app1/
Connection: keep-alive

先感谢您!

相关内容