동일한 도메인에서 NGINX를 통해 SSH를 프록시해야 합니다. 포트 80에 프록시를 설정했는데 제대로 작동합니다. 하지만 포트 22를 동일한 서버로 프록시해야 합니다.
원래 구성:
upstream web {
least_conn;
server 10.0.0.4;
}
server {
access_log /var/log/nginx/web.com combined;
index index.html index.htm index.php;
server_name www.web.com web.com;
location /{
proxy_pass http://web;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
내 포트 22 구성은 다음과 같습니다.
stream {
upstream ssh {
server 10.0.0.17:22;
}
server {
listen 22;
server_name gitlab.web.com;
proxy_pass ssh;
}
}
도메인에 연결하면 10.0.0.17 대신 nginx 서버에 연결을 시도합니다.
답변1
Nginx를 통한 SSH 프록시의 경우 SSH 서버에 포트 22가 아닌 다른 포트를 사용하십시오.
# use a different port for SSH client if Ngnix uses
# port 22
Port 8022
또는 SSH 서버에 포트 22를 유지하려면 다른 포트를 사용하도록 Nginx 구성을 구성해야 할 수도 있습니다.
stream {
upstream ssh {
server 10.0.0.17:22;
}
server {
listen 8022;
server_name gitlab.web.com;
proxy_pass ssh;
}
}
이 방식으로 구성하는 경우 GitLab CE/EE 사용자는 다음을 수행해야 할 수 있습니다.
# unless you blocked port 22, users who do Git-over-SSH need to configure
# stuff on their clients instead of doing this.
ssh [email protected] -p 8022