Nginx:如何将一个子目录通过 proxy_pass 传递到另一个子目录

Nginx:如何将一个子目录通过 proxy_pass 传递到另一个子目录

请帮忙,我正在尝试代理通过我的domain.com/travel到此处运行内容的节点应用程序255.255.255.255:1234/旅行... 我该怎么做呢?

我目前有这个:

location /travel/ {
    rewrite ^/travel(/.*)$ $1 break;
    proxy_pass  http://255.255.255.255:1234/travel;
    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;
}

这部分有效,但它进入了应用程序的根目录http://255.255.255.255:1234而是。我可以在 Apache 中用这个来做到这一点

ProxyPreserveHost On
ProxyPass /travel/ http://255.255.255.255:1234/travel/
ProxyPassReverse /travel/ http://255.255.255.255:1234/travel/
ProxyPass /travel http://255.255.255.255:1234/travel/
ProxyPassReverse /travel http://255.255.255.255:1234/travel/

但自从转移到 Nginx 后,我就无法复制这个问题了。帮忙吗?

答案1

你应该能够使用这个:

location /travel(/.*)$ {
    rewrite ^ $1 break;
    proxy_pass  http://example.com:1234/travel$1;
    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指令中,尽管这并没有带来太大的变化。然后,我将添加$1proxy_pass,这样proxy_pass目标 URL 就会将正则表达式捕获结果附加到 URL 末尾。

相关内容