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 (Port 22) -Anfragen proxen. Kann ich der gleichen 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 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
nginx
handelt alshttp
Proxy. Wenn Sie den Proxy-Port 22 auf "Reverse" setzen, können Sie keinen SSH-Datenverkehrhttp
weiterleiten - nur Datenverkehr zum SSH-Server, der offensichtlich ausfällt.Antworten:
Das ssh-Protokoll basiert nicht auf HTTP und kann als solches nicht durch das reguläre
proxy_pass
von vertreten werdenngx_http_proxy_module
Doch vor kurzem, beginnend mit nginx 1.9.0 (veröffentlicht als stabil mit 1.10.0 auf 2016.04.26), nginx hat Verstärkung Unterstützung dafür TCP - Stream proxying, was bedeutet , dass , wenn Sie eine aktuelle-genug - Version von nginx haben, Sie können tatsächlich Proxy-SSH-Verbindungen damit herstellen (beachten Sie jedoch, dass Sie
X-Real-IP
der Proxy-Verbindung nichts Ähnliches hinzufügen können , da dies nicht auf HTTP basiert).Weitere Informationen und Beispiele finden Sie unter:
quelle
Seit Nginx Version 1.9.0 unterstützt NGINX das Modul ngx_stream_core_module und sollte mit --with-stream aktiviert werden. Wenn das Stream-Modul aktiviert ist, können sie das TCP-Proxy-Protokoll ssh verwenden
https://www.nginx.com/resources/admin-guide/tcp-load-balancing/
quelle
ssh [email protected]
undssh [email protected]
- es wäre toll. Es handelt sich um eine Protokollbeschränkung (SSH gibt die DNS-Namen, die der Client verwendet, nicht weiter)srv1
und 222 fürsrv2
), oder indem Sie verschachtelte ssh-Sitzungen verwenden, in denen Sie zuerst in den öffentlichen Server / die öffentliche IP ssh und von dort aus ssh in die Blätter; zBssh [email protected] 'ssh [email protected]'
.HOST
Header, so dass man leicht unterscheiden kann, auf welche Site er abzielt ... Verschachtelte SSH-Sitzungen sind eine Art Lösung, aber eine chaotische - das funktioniert jedoch. Am Ende hatte ich verschiedene Ports in unserem Edge-Netzwerk - gutes altes NAT als die am meisten geküsste und zuverlässigste Lösung.