请帮忙,我正在尝试代理通过我的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
指令中,尽管这并没有带来太大的变化。然后,我将添加$1
到proxy_pass
,这样proxy_pass
目标 URL 就会将正则表达式捕获结果附加到 URL 末尾。