(更新)次のようなリクエストをプロキシしたい:
https://port123.Host.com:85/any/path ==> http://server85:123/any/path
https://port567.Host.com:85/any/path ==> http://server85:567/any/path
https://port123.Host.com:86/any/path ==> http://server86:123/any/path
https://port567.Host.com:86/any/path ==> http://server86:567/any/path
これを達成することをどのように勧めますか? (私はそれが面白いアーキテクチャであることを知っています)
サーバー宣言はSSLなしで機能しますが、SSLありでは機能しません。
server {
listen 86 ssl;
server_name port123;
ssl_certificate CERT123;
ssl_...;
localtion / { proxy_pass.... }
}
server {
listen 86 ssl;
server_name port567;
ssl_certificate CERT567;
ssl...;
localtion / { proxy_pass.... }
}
これはnginx(シングルポートとシングルIPでのマルチSSLS)の既知の制限だと思います。しかし、簡単な回避策があるのではないかと思います。私が持っているすべてのサーバーは実際にはワイルドカード証明書を持つワイルドカードであるため、SANを使用することはできません。
Nginxがリッスンするポートごとにサーバーブロックを作成できます。サーバーブロック内で、ホスト:ポートの組み合わせにリダイレクトできます。これを試してください...それはあなたが尋ねたことをするはずです:
server {
listen 85;
listen [::]:85;
server_name port123.Host.com;
location / {
proxy_pass http://server85:123/;
proxy_redirect off;
proxy_set_header Host $Host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
server {
listen 86;
listen [::]:86;
server_name port567.Host.com
location / {
proxy_pass http://server86:567/;
proxy_redirect off;
proxy_set_header Host $Host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}