私が設定したUbuntu 20.04.3 LTS nginxバージョン:nginx / 1.20.2
着信SSLトラフィックのリバースプロキシとしてnginxを使用したいと思います。 nginxには証明書がなく、ssl_prereadを使用してサーバー名を取得してバックエンドにルーティングします。ポート443にリダイレクトされるポート80でリッスンするサーバーがあります。
本当にシンプルで効果が本当に良いです..
私のファイアウォールはポート80と443をnginxに転送し、nginxはトラフィックをバックエンドサーバーに送信します。
私の設定:
server {listen 80 default_server;
listen [::]:80 default_server;
server_name _;
return 301 https://$host$request_uri;
}
stream {
map $ssl_preread_server_name $name {
mosa.citystates.net other-server;
}
upstream other-server{
server 192.168.10.166:443;
}
server {
listen 443;
proxy_pass $name;
ssl_preread on;
}
}
それでは、リクエストのサーバー名がストリームマップの名前と一致しない場合はどうなりますか?これらのリクエストをbitbucketに正常に送信するにはどうすればよいですか?例:私のDNSが私のnginxサーバーの間違ったドメインをチェックしている場合、nginxはマッピングのどの名前とも一致しないabc.citystates.netの要求を受け取ることがあります。ここで予想される反応は何ですか?私が得るのは、「提供されたホスト名がこのサーバーには無効です」というmosa.citystates.netからの応答だけであり、mosa.citystates.net証明書と応答も送信して私を混乱させます。
私の期待は、フローグラフと一致しないものは破棄されることです。また、名前が一致しないサーバーに要求を転送することも望ましくありません。
また、nginxサーバーのIPアドレスにアクセスすると、「このサイトに接続できません」というメッセージが表示されますが、証明書を持ってはいけないと思うものと一致します。
だから私はこれが少し長いことを知っています。私はnginxに初めて触れたので、問題の簡潔な説明は現在私の能力を少し超えていることです。
この問題を解決する方法のアイデアは非常に役に立ちます。
-FG