nginx proxy_pass 使用子文件夹

pAt*_*t84 13 nginx reverse-proxy port-forwarding

好的,这个任务应该很简单,但我无法让它工作。我想在我的域名之后(实际上是在该域名的 IP 之后)有一个子文件夹,它重定向到同一服务器上的特定端口。本质上,我想摆脱必须使用许多端口的情况。

这是我的 nginx 配置

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

因此,在访问 aaa.bbb.ccc.ddd/app2 时,我希望将其解析为http://aaa.bbb.ccc.ddd:8001

这可能会很复杂。我在这里缺少什么?

谢谢帕特

Ter*_*nen 16

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

您可以将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;
}
Run Code Online (Sandbox Code Playgroud)

这里我们捕获/app2to$1变量之后的 URI 部分,并在proxy_pass指令中使用它。