質問 Nginx は $remote_addr を実際の IP アドレスとして受け取りますが、実際には $http_X_Forwarded_For はユーザーの実際の IP アドレスであり、$remote_addr はプロキシの上位層のアドレスにすぎません。 解決: httpモジュールに追加 set_real_ip_from 172.17.10.125; #上位プロキシ IP アドレス real_ip_header X-Forwarded-For; real_ip_recursive オン; 追加後、nginx を起動してエラーを報告します。 nginx: [emerg] /home/lnidmp/nginx/conf/nginx.conf:26 に不明なディレクティブ「set_real_ip_from」があります realipモジュールを追加してnginxを再コンパイルする必要がある 1. /usr/local/nginx-1.15.12に移動します 2. ./configure --prefix=/usr/cmcc/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module 3. インストールする 親切なヒント: 1. set_real_ip_fromは、信頼できるプロキシからの実際のユーザーIPを受け入れることを意味します 2. real_ip_headerは受信したメッセージのhttpヘッダーを参照し、前のプロキシから送信されたユーザーIPを取得します。 3. real_ip_recursive: ユーザーの IP が取得されるまで再帰的に除外するかどうか (デフォルトはオフ) まず、real_ip_header は http ヘッダー名を指定します。デフォルトは X-Real-Ip です。デフォルト値が使用されていると仮定すると、nginx はメッセージを受信した後に http ヘッダー X-Real-Ip をチェックします。 (1)IPがある場合、送信者のIPがset_real_ip_fromで指定された信頼できるIPリストに含まれているかどうかを確認します。信頼されている場合、X-Real-Ip の IP 値はフロント プロキシによって通知されたユーザーの実際の IP 値であると判断され、その値が独自の $remote_addr 変数に割り当てられます。信頼されていない場合は処理されず、$remote_addr は送信者の IP アドレスのままになります。 (2)X-Real-Ipに複数のIP値がある場合、例えば、前のプロキシは次のように設定されます:proxy_set_header X-Real-Ip $proxy_add_x_forwarded_for; 取得されるのは IP の文字列なので、real_ip_recursive の値が重要になります。 Nginx は、set_real_ip_from の信頼リスト内の IP を IP リストの右から左に比較します。 real_ip_recursive がオフの場合、右端の IP が信頼できる IP であると判明すると、次の IP (右から 2 番目) がユーザーの実際の IP であると見なされます。 real_ip_recursive がオンの場合、信頼できない IP アドレスが見つかるまで、IP アドレスは右から左に比較されます。 次に、IP 値も $remote_addr にコピーします。 本番環境の nginx 構成ファイルは次のとおりです。 ユーザー www; ワーカープロセス 10; ワーカー_rlimit_nofile 51200; #error_log ログ/error.log; #error_log ログ/error.log 通知; #error_log ログ/error.log 情報; error_log /data/logs/nginx_error.log クリット; #pid ログ/nginx.pid; イベント { epoll を使用します。 ワーカー接続数 51200; } http { mime.types を含めます。 デフォルトタイプ アプリケーション/オクテットストリーム; #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #access_log ログ/access.log メイン; サーバー名ハッシュバケットサイズ 128; server_tokens オフ; 1時間で期限切れになります。 sendfile オフ; tcp_nopush オン; fastcgi_connect_timeout 1200秒; fastcgi_send_timeout 1200秒; fastcgi_read_timeout 1200秒; fastcgi_buffer_size 128k; fastcgi_buffers 8 128k;#8 128 fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; キープアライブタイムアウト65; tcp_nodelay オン; エラーページ 404 /; gzip オン; gzip_min_length 2048; gzip_バッファ 4 16k; gzip_http_バージョン1.1; gzip_types text/plain css html application/xml application/x-javascript ; 上位プロキシ IP アドレスから set_real_ip_from; real_ip_recursive オン; real_ip_header X-Forwarded-For; log_format アクセス '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" $http_x_forwarded_for'; ##################### 含む ############################################## conf.d/*.conf をインクルードします。 } 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: vue.js を使用してドラッグ アンド ドロップ機能を実装する方法
DOM の概念DOM: ドキュメント オブジェクト モデル: ドキュメント オブジェクト モデルは、...
1. はじめにコンテナはサンドボックス メカニズムを使用して相互に分離します。コンテナ内にデプロイさ...
Docker を起動したら、利用できるオプションを見てみましょう。 公式のものがある場合は、もちろ...
1. 文字セットを確認する1. MYSQLデータベースサーバーとデータベースの文字セットを確認する方...
目次イベントループmiscroTask (マイクロタスク) UI レンダリング (重要なポイント)次...
日々の開発において、フロントエンドの学生はアニメーションやデザインについてよく議論します。デザイナー...
この記事では、例を使用して MySQL トリガーの作成と使用について説明します。ご参考までに、詳細は...
背景多くのウェブサイトのデザインは、一般的にコンテンツ+フッターの2つの部分で構成されています。コン...
目次1. jQueryの紹介2. jQueryセレクター2.1 5つの基本セレクタ2.2 4種類の関...
Dockerタグの詳しい説明docker tag コマンドの使い方と、ローカルイメージを daocl...
Python プログラムを書き、Mysql ライブラリを集中的に操作したためです。データ量が多くない...
SHTMLとASPは似ています。SHTMLという名前のファイルでは、SSIの命令がASPの命令と同じ...
前回の記事で、mysqldump バックアップ ファイルに記録されるタイムスタンプ データは UTC...
前に書いたものは複雑すぎるので、シンプルなコアにしましょう <html> <ヘッド...
目次序文1. エンドポイント2. 接続ハンドラ3. コヨーテ4. コンテナ責任チェーンパターン序文T...