同じドメインで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