Nginx

如何將 NGINX 配置為不同埠號的反向代理?

  • March 11, 2019
I have NGINX configured like this as a reverse proxy for http requests:

server {
   listen 80;
   server_name 203.0.113.2;

   proxy_set_header X-Real-IP  $remote_addr; # pass on real client IP

   location / {
       proxy_pass http://203.0.113.1:3000;
   }
}

我還想代理 ssh(埠 22)請求。我可以將另一個這樣的伺服器塊添加到同一個配置文件中嗎:

server {
   listen 22;
   server_name 203.0.113.2;

   proxy_set_header X-Real-IP  $remote_addr; # pass on real client IP

   location / {
       proxy_pass http://203.0.113.1:22;
   }
}

這樣最終的結果是這樣的:

server {
   listen 80;
   server_name 203.0.113.2;

   proxy_set_header X-Real-IP  $remote_addr; # pass on real client IP

   location / {
       proxy_pass http://203.0.113.1:3000;
   }
}
server {
   listen 22;
   server_name 203.0.113.2;

   proxy_set_header X-Real-IP  $remote_addr; # pass on real client IP

   location / {
       proxy_pass http://203.0.113.1:22;
   }
}

TIA,

奧萊

ssh 協議不是基於 HTTP的proxy_pass,因此不能通過ngx_http_proxy_module

然而,最近,從nginx 1.9.0(2016 年 4 月 26 日與 1.10.0 穩定發布)開始,nginx 確實獲得了對TCP 流代理的支持,這意味著如果你有足夠新的 nginx 版本,實際上,您可以使用它來代理 ssh 連接(但是,請注意,您無法向X-Real-IP代理連接添加任何類似的東西,因為這不是基於 HTTP)。

有關更多資訊和範例,請查看:

引用自:https://unix.stackexchange.com/questions/290223