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 protocol はHTTPに基づいていないため、通常の proxy_pass
ngx_http_proxy_module
ただし、最近、 nginx 1.9.0(2016-04-26の1.10.0で安定版としてリリースされた)以降、nginxはTCPストリームプロキシ、つまり、nginxの最新バージョンを使用している場合、実際にはssh接続をプロキシできます。 (ただし、これはHTTPに基づいていないため、X-Real-IP
のようなものをプロキシ接続に追加できないことに注意してください)。
詳細と例については、以下をご覧ください。
Nginxバージョン1.9.0、NGINXはngx_stream_core_moduleモジュールをサポートしているため、-with-streamで有効にする必要があります。ストリームモジュールが有効な場合、sshプロトコルtcpプロキシが可能です。
stream {
upstream ssh {
server 192.168.1.12:22;
}
server {
listen 12345;
proxy_pass ssh;
}
}
https://www.nginx.com/resources/admin-guide/tcp-load-balancing/