it-swarm.com.de

Wie konfiguriere ich NGINX als Reverse Proxy für verschiedene Portnummern?

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

Ich möchte auch SSH-Anfragen (Port 22) als Proxy senden. Kann ich derselben Konfigurationsdatei einen weiteren Serverblock wie diesen hinzufügen:

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

So dass das Endergebnis folgendes ist:

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,
Ole

17
Ole

Das ssh-Protokoll basiert nicht auf HTTP und kann als solches nicht über das reguläre proxy_pass von ngx_http_proxy_module

In jüngster Zeit, beginnend mit nginx 1.9.0 (veröffentlicht als stabil mit 1.10.0 am 26.04.2016), erhielt nginx jedoch Unterstützung für das Ausführen von TCP stream Proxy, was bedeutet, dass Sie, wenn Sie eine ausreichend aktuelle Version von nginx haben, tatsächlich SSH-Verbindungen mit Proxy herstellen können (beachten Sie jedoch, dass Sie könnten nichts wie das X-Real-IP zur Proxy-Verbindung, da diese nicht auf HTTP basiert).

Weitere Informationen und Beispiele finden Sie unter:

14
cnst

Da Nginx Version 1.9.0, NGINX das Modul ngx_stream_core_module unterstützt, sollte es mit dem --with-stream aktiviert werden. Wenn das Stream-Modul aktiviert ist, können sie den TCP-Proxy des SSH-Protokolls verwenden

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