- blogs:
- cles::blog
2021/05/24

nginx の Port 443 で SSL と SSH を共存させる


「Run Non-SSL Protocols on the Same Port as SSL in NGINX 1.15.2」という記事を読んで、$ssl_preread_protocol
を使うと 1 つのポート ( 443 ) で複数のプロトコルを扱う Proxy を nginx で実現できることが分かったので試してみようとしたら、そんなに単純にいかなかったので顛末をメモ。
結局のところ、設定ファイルは以下のような形になりました。
http {
server {
listen 127.0.0.1:8443 ssl http2 proxy_protocol;
real_ip_header proxy_protocol;
set_real_ip_from 127.0.0.1;
・・・・・・・・・
}
}
stream {
upstream ssh {
server 127.0.0.1:8022;
}
upstream web {
server 127.0.0.1:8443;
}
map $ssl_preread_protocol $upstream {
default ssh;
"TLSv1.3" web;
"TLSv1.2" web;
}
server {
listen 443;
proxy_pass $upstream;
ssl_preread on;
proxy_protocol on;
}
server {
listen 127.0.0.1:8022 proxy_protocol;
proxy_pass 127.0.0.1:22;
}
}
鬼門だったのは PROXY Protocol*1 の設定の部分。この設定は proxy_pass された先のサーバがクライアントの IP を知るために必須の設定ですが、SSH のように PROXY Protocol に対応していないサービスの場合には、そのままローカルの 22 に proxy_pass してしまうとプロトコルエラーになってしまいます。
分かってしまえば単純な話なのですが、nginx では proxy_protocol on;
で proxy_pass した場合、飛ばし先の listen に proxy_protocol をつければよいので、ssh の場合には stream
の定義のところに proxy_protocol がついた server
をもうひとつ定義してあげる必要がありました。
トラックバックについて
Trackback URL:
お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/12493
Trackbacks
このエントリにトラックバックはありません
Comments
愛のあるツッコミをお気軽にどうぞ。[policy]
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントはありません
Comments Form
コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。
OpenID を使ってログインすることができます。
サイト内検索
検索ワードランキング
へぇが多いエントリ
- WSL の apt が遅いときの対策... (3)
- Word で数式がグレーアウトさ... (2)
- 軽井沢の中央分水嶺 (2)
- きらく(閉店) (1)
- 北朝鮮工作船の資料館がオン... (1)
閲覧数が多いエントリ
1 . Solr-rubyで複数のドキュメントを一括Post(32782)
2 . Windows 10 で勝手にログアウトされないようにする(23718)
3 . Word で数式がグレーアウトされていて挿入できないときは(22124)
4 . リモートデスクトップで Alt + PrtSc と同じことをするには(19663)
5 . Visual Studio 2017/2019 で scanf() がエラー(C4996)になるときは(19129)
2 . Windows 10 で勝手にログアウトされないようにする(23718)
3 . Word で数式がグレーアウトされていて挿入できないときは(22124)
4 . リモートデスクトップで Alt + PrtSc と同じことをするには(19663)
5 . Visual Studio 2017/2019 で scanf() がエラー(C4996)になるときは(19129)
cles::blogについて
Referrers