是否可以使用 Nginx 从这样的 URL 代理:
http://example.com/service/1234/foo.php?...
到这样的内部服务:
http://example.com:1234/foo.php?...
也就是说,从 URL 中提取一个数字,并将其用作同一服务器的端口号?
rewrite
似乎仅限于在端口之后操作 URL 的一部分,我认为proxy_pass
不能从中访问正则表达式子字符串。
我要解决的具体问题是让我的服务都可以在端口 80 上访问,因为各种公司和公共网络会阻止服务实际运行的外来端口。所以它必须是反向代理,而不是重定向。
此方法适用于单个端口:
location /service/5010 {
rewrite ^/service/5010/(.*)$ /$1 break;
proxy_pass http://127.0.0.1:5010;
}
但问题是如何使 5010 只是从 URL 中提取的一个参数。