我有以下配置,它有效,但非常重复:
server {
listen 8080;
location / {
proxy_pass http://target_service:8080;
proxy_set_header Host target_service;
proxy_set_header Connection "Close";
proxy_http_version 1.1;
}
}
server {
listen 8081;
location / {
proxy_pass http://target_service:8081;
proxy_set_header Host target_service;
proxy_set_header Connection "Close";
proxy_http_version 1.1;
}
}
有没有一种好方法可以将它们合并为一个server
来监听两个端口,并在每个请求的正确端口上转发?
答案 0 :(得分:1)
你应该能够做到这一点。合并您的服务器块:
$server_port
然后使用location / {
set $target_url http://target_service:$server_port;
proxy_pass $target_url;
proxy_set_header Host target_service;
proxy_set_header Connection "Close";
proxy_http_version 1.1;
}
变量创建所需的网址。您可能需要指定一个解析器,因为proxy_pass不能很好地与动态变量一起使用,但这可能会解决这个问题。
{{1}}