Nginx のポート関係の変数
$proxy_port
: proxy_pass ディレクティブの中で指定されたプロキシされるサーバのポート番号、あるいはプロトコルのデフォルトのポート番号;$proxy_protocol_port
: PROXYプロトコルヘッダからのクライアントポート、そうでなければ空文字 (1.11.0)。 PROXYプロトコルはlistenディレクティブのproxy_protocol パラメータの設定によって前もって有効にされていなければなりません。$proxy_protocol_server_port
: server port from the PROXY protocol header (1.17.6). The PROXY protocol must be previously enabled by setting the proxy_protocol parameter in the listen directive.$realip_remote_port
: 元のクライアントポートを保持します$remote_port
: クライアントのポート$server_port
: リクエストを受け付けたサーバのポート
以上、公式ページとその日本語訳のページから抜粋でした。
変数の値を調べるために Nginx 設定ファイルに加えた変更点
/etc/nginx/conf.d/default.conf
に次の変更を加えました。
$proxy_protocol_server_port
は Nginx のバージョンが低いために使用できませんでしたので、コメントにいたしました。
$ diff -up default.conf.202002140654 default.conf
--- default.conf.202002140654 2020-02-14 06:54:59.584823973 +0900
+++ default.conf 2020-02-14 07:16:29.581498321 +0900
@@ -35,6 +35,14 @@ server {
proxy_set_header X-Forwarded-Port $server_port;
proxy_cache_valid 200 404 1d;
+ add_header test test;
+ add_header test_proxy_port $proxy_port;
+ add_header test_proxy_protocol_port $proxy_protocol_port;
+ #add_header test_proxy_protocol_server_port $proxy_protocol_server_port;
+ add_header test_realip_remote_port $realip_remote_port;
+ add_header test_remote_port $remote_port;
+ add_header test_server_port $server_port;
+
location ~ /\. {deny all; access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
location = /favicon.ico { access_log off; log_not_found off; }
結果
ウェブサイトのトップページを表示し、 Response Headers を確認した結果がこちらです。
test: test
test_realip_remote_port: 43951
test_remote_port: 43951
test_server_port: 443
これら以外は出力されませんでした。 proxy 系は、設定を記述する場所がよくなかったのでしょう。
remote_port 系は、クライアントのポートということでしたので、ウェブブラウザのポート、ということなのでしょう。 server_port は、サーバのポートということで、 Nginx のポートであり、大抵は 80 と 443 のどちらかを開放しますから、今回は 443 であった、というように理解することができます。
おわりに
WordPress サイトヘルスの critical issue 2 つを解決したメモ – oki2a24 でポート番号を Nginx 設定に追加いたしました。最終的に $server_port
を設定いたしましたけれども、これに至るまでに実は迷いました。 Nginx の変数でポート関係のものがいくつかあったためです。
今回、全てを理解、とまではいきませんでしたけれども、断片的にでも理解ができ、 $server_port
の設定で間違いではなかったと納得できましたので、良かったです。
デバッグするのに参考になったページです。ありがとうございました!!
以上です。