繁体   English   中英

可以侦听多个端口并将它们代理传递给 NGINX 中的同一台主机吗?

[英]Can listen on multiple ports and proxy_pass them to the same host in NGINX?

我有以下配置,它有效但非常重复:

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 ,该server侦听两个端口,并为每个请求转发正确的端口?

你应该能够做到这一点。 组合您的服务器块:

server {
  listen 8080;
  listen 8081;
}

然后使用$server_port变量创建所需的 url。 您可能需要指定一个解析器,因为 proxy_pass 不能很好地处理动态变量,但这可能会解决这个问题。

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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM