我希望http://example.com/test/4000
(或其他一些号码)将proxy_pass传递给http://localhost:4000/test
。
这可能,我该怎么做?
答案 0 :(得分:0)
以下是示例:
server {
listen 80;
server_name example.com;
# default port for proxy
set $port 80;
# redirect /4000 --> /4000/ just to be sure
# that next rewrite works properly
rewrite ^(/\d+)$ $1/ redirect;
# rewrite /4000/path/to/file to /path/to/file
# and store port number to variable
rewrite ^/(?<port>\d+)(.+)$ $2;
location / {
# proxy request to localhost:$port
proxy_pass http://localhost:$port;
}
}
它代理/PORT_NUMBER/path/to/file
向localhost:PORT_NUMBER/path/to/file
的请求。如果网址未以端口号开头,则会回退到80,因此/path/to/file
的请求将代理到localhost:80/path/to/file
。
没有检查端口号是否有效,因此不建议将其用于生产。但无论如何,在生产中使用可变端口号确实是个坏主意。