web-dev-qa-db-ja.com

NGINXを異なるポート番号のリバースプロキシとして構成する方法

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、
オレ

17
Ole

ssh protocol はHTTPに基づいていないため、通常の proxy_passngx_http_proxy_module

ただし、最近、 nginx 1.9.0(2016-04-26の1.10.0で安定版としてリリースされた)以降、nginxはTCPストリームプロキシ、つまり、nginxの最新バージョンを使用している場合、実際にはssh接続をプロキシできます。 (ただし、これはHTTPに基づいていないため、X-Real-IPのようなものをプロキシ接続に追加できないことに注意してください)。

詳細と例については、以下をご覧ください。

14
cnst

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/

10
Hendi Fauzi