带有dynamic端口转发的Nginx反向代理

我在Nginx上设置了一个反向代理。 我需要它听多个端口。 然后我想要在后端服务器上find完全相同的端口。 像这样: http:// frontendserver:9000 – > http:// backendserver:9000 。

这是我认为会工作

## server configuration server { listen 9000 ; listen 9001 ; listen 9002 ; listen 9003 ; listen 9004 ; listen 9005 ; listen 9006 ; listen 9007 ; listen 9008 ; listen 9009 ; server_name frontendserver; if ($http_x_forwarded_proto = '') { set $http_x_forwarded_proto $scheme; } location / { proxy_read_timeout 900; proxy_pass_header Server; proxy_cookie_path ~*^/.* /; proxy_pass http://backendserver:$server_port/; proxy_set_header X-Forwarded-Port $server_port; proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto; proxy_set_header Host $http_host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } 

但是,它给了我一个502错误的网关错误。 任何线索为什么这样,或者如果有另外一种方法可以像上面解释的那样工作呢?

如果我改变:

 proxy_pass http://backendserver:$server_port/; 

 proxy_pass http://backendserver:9000/; 

它工作得很好,这当然打败了目的…