我的目的是让多个 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
先感谢您!