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;
}
}
Chcę również proxy żądań ssh (Port 22). Czy mogę dodać kolejny blok serwera do tego samego pliku konfiguracyjnego:
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;
}
}
Taki wynik końcowy jest następujący:
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
działa jakohttp
pełnomocnik. Jeśli ustawisz odwrotny port proxy 22, nie pozwoli ci on przekazywać ruchu SSH - tylkohttp
ruch do serwera SSH, który oczywiście się nie powiedzie.Odpowiedzi:
Protokół ssh nie jest oparta na HTTP i jako takie nie mogą być przekierowywane przez regularne
proxy_pass
odngx_http_proxy_module
Jednak ostatnio, poczynając od nginx 1.9.0 (wydany jako stabilny z 1.10.0 26.04.2016), nginx uzyskał wsparcie dla robienia proxy TCP , co oznacza, że jeśli masz wystarczająco nową wersję nginx, w rzeczywistości możesz z nim łączyć połączenia ssh proxy (pamiętaj jednak, że nie możesz dodać niczego podobnego
X-Real-IP
do połączenia proxy, ponieważ nie jest to oparte na HTTP).Aby uzyskać więcej informacji i przykładów, spójrz na:
źródło
Ponieważ Nginx w wersji 1.9.0, NGINX obsługuje moduł ngx_stream_core_module, należy go włączyć za pomocą --with-stream. Gdy moduł przesyłania strumieniowego jest włączony, możliwe jest przesyłanie proxy tcp protokołu ssh
https://www.nginx.com/resources/admin-guide/tcp-load-balancing/
źródło
ssh [email protected]
issh [email protected]
- byłoby świetnie. Jest to ograniczenie protokołu (SSH niesrv1
i 222 dlasrv2
), albo używając zagnieżdżonych sesji ssh, gdzie najpierw ssh na publicznym serwerze / IP, a stamtąd, ssh w liście; npssh [email protected] 'ssh [email protected]'
.HOST
nagłówek, więc łatwo jest rozróżnić, na którą stronę celuje ... Zagnieżdżone sesje SSH są rodzajem rozwiązania, ale bałagan - ale to działa. Skończyłem z różnymi portami w naszej sieci brzegowej - stary dobry NAT jako najbardziej KISS i niezawodne rozwiązanie.