nginx使用子文件夹的proxy_pass

好吧,这个任务应该是简单的,但我不能得到它的工作。 我想在我的域名(实际上在该域名的IP之后)有一个子文件夹,该子文件夹redirect到同一台服务器上的特定端口。 本质上,我想摆脱必须使用许多端口。

这是我的nginxconfiguration

server { listen 80; index index.html index.htm index.nginx-debian.html index.php; server_name aaa.bbb.ccc.ddd; location ^~ /app2 { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Host $host; proxy_pass http://aaa.bbb.ccc.ddd:8001; } } 

所以在访问aaa.bbb.ccc.ddd / app2我想这个解决http://aaa.bbb.ccc.ddd:8001 。

这可能会注意到可能是如此复杂。 我在这里错过了什么?

谢谢你

由于您将此标记为反向代理问题,因此我假定您的意思是代理请求,以便用户在浏览器中只能看到http://aaa.bbb.ccc.ddd/app2url。

您可以将您的location块更改为:

 location ~/app2(.*)$ { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Host $host; proxy_pass http://aaa.bbb.ccc.ddd:8001$1; } 

在这里,我们将/app2后面的URI部分捕获到$1variables,并在proxy_pass指令中使用它。