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;
}
}
Saya juga ingin mem-proxy permintaan ssh (Port 22). Dapatkah saya menambahkan blok server lain seperti ini ke file konfigurasi yang sama:
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;
}
}
Sehingga hasil akhirnya adalah ini:
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
bertindak sebagaihttp
proxy. Jika Anda mengaturnya untuk membalikkan port proxy 22, itu tidak akan memungkinkan Anda untuk melewati lalu lintas SSH - hanyahttp
lalu lintas ke server SSH, yang jelas akan gagal.Jawaban:
The protokol ssh tidak didasarkan pada HTTP, dan, dengan demikian, tidak dapat proksi melalui reguler
proxy_pass
daringx_http_proxy_module
Namun, baru-baru ini, dimulai dengan nginx 1.9.0 (dirilis sebagai stabil dengan 1.10.0 pada 2016-04-26), nginx mendapatkan dukungan untuk melakukan proksi aliran TCP , yang berarti bahwa jika Anda memiliki versi nginx yang cukup baru, Anda dapat, pada kenyataannya, koneksi ssh proxy dengannya (namun, perhatikan bahwa Anda tidak akan dapat menambahkan hal seperti itu
X-Real-IP
ke koneksi proksi, karena ini bukan berdasarkan HTTP).Untuk informasi dan contoh lebih lanjut, lihat:
sumber
Sejak Nginx Versi 1.9.0, NGINX mendukung modul ngx_stream_core_module, itu harus diaktifkan dengan --with-stream. Ketika modul stream diaktifkan, mereka dimungkinkan untuk ssh proxy protokol tcp
https://www.nginx.com/resources/admin-guide/tcp-load-balancing/
sumber
ssh [email protected]
danssh [email protected]
- itu akan bagus. Ini adalah batasan protokol (SSH tidak akan memberikan penggunaan nama klien DNS)srv1
dan 222 untuksrv2
), atau dengan menggunakan sesi ssh bersarang, di mana Anda pertama kali ssh ke server publik / IP, dan dari sana, ssh ke daun; misalnyassh [email protected] 'ssh [email protected]'
,.HOST
tajuk sehingga mudah untuk membedakan situs mana yang ditargetkan ... Sesi SSH bersarang adalah semacam solusi tetapi berantakan - yang berfungsi sekalipun. Saya berakhir dengan port yang berbeda di jaringan tepi kami - NAT tua yang baik sebagai solusi yang paling KISS dan dapat diandalkan.