特定のIPのみにアクセスできます.そうしないと、チェック中のページにリダイレクトされます.
TO-BE
導入後、チームメンバーのみがテスト中に許可されたIPにアクセスできるようにし、他のIPアクセスは「チェック中」ページに進みます.
Trouble Shooting
1. $remote_addr
# nginx.conf
http {
...
map $remote_addr $maintenance {
default on;
127.0.0.1 off; # 원하는 IP 기입
}
server {
...
proxy_intercept_errors on;
location / {
...
if ($maintenance = on) {
return 503;
}
}
error_page 503 /maintenance.html;
location = /maintenace.html {
root /home/ec2-user/web;
internal;
}
}
}
結果
2. $http_x_forwarded_for
IPが見つかりました.
西青をしていて、ipconfigのipとhttps://whatismyipaddress.com/のipが違います.後者のipはISPのip、すなわちルータのipのようです.ここで撮ったipをnginx設定に追加しましたが、まだ正常に動作していません.
Netstatコマンドも撮って、あちこち探しましたが、正常に働かなかった.
access_log
nginxで入ってきたログを撮ります!考えて、ログを作る方法を探しました.記録は以下のように設定できます.
# nginx.conf
http {
...
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 /var/log/nginx/access.log main;
...
}
(ログ記録の方法を探して設定し始めたとき、nginx.confファイルでログ記録が有効になっていることに気づきました.)
ログファイルに行って$remote addrを確認しましたが、IPリクエストは2つしかありません.実際のクライアントIPは$http x転送forに印刷され、ここで確認したhttps://whatismyipaddress.com/と同じです.リモートaddrは2種類に設定されており,アクセスはAWS設定に関係していると考えられるため,AWS環境でWebサーバフロントエンドを用いたELBに関係する書名が行われている.
ロード・バランサはクライアントのipを自分のipに変更し、サーバを要求するため、nginxのaccess logでは$remote addrがロード・バランサのIPとして印刷される.したがって、ロードバランサまたはエージェントを使用すると、クライアントの元のIPアドレスを決定するには、X-Forward-DFOrヘッダを使用する必要があります.
1) Proxyモード負荷バランサを使用してクライアントIPを記録する(TOASTサービス概要)
2) ELBベースのWebサーバログからクライアントIPアドレスをキャプチャする方法
n/a.結論
nginxプロファイルで$remote addrを$http x転送forに変換すると、その実行状況が表示されます.
最終解決コード
# nginx.conf
http {
...
map $http_x_forwarded_for $maintenance {
default on;
127.0.0.1 off; # 원하는 IP 기입
}
server {
...
proxy_intercept_errors on;
location / {
...
if ($maintenance = on) {
return 503;
}
}
error_page 503 /maintenance.html;
location = /maintenace.html {
root /home/ec2-user/web;
internal;
}
}
}
残りの懸念自動化
上のTO-BEのために、構築後に導入する前にnginx.マッピングをconf設定に挿入し、配置後にnginxをテストします.conf設定でマッピングを削除する必要があります.
# 배포 전에는 이 부분을 넣고, 테스트 후에는 이 부분을 빼줘야 한다.
map $http_x_forwarded_for $maintenance {
default on;
127.0.0.1 off; # 원하는 IP 기입
}
バージョン->特定のIPアクセスのみを許可するnginx.conf設定->導入->テスト->IP制限が欠けているデフォルトnginx.conf設定悩んでいる時はconfファイルを置き換えるshellスクリプトを作成し、jenkinsを使用して実行します.
Reference
この問題について(特定のIPのみにアクセスできます.そうしないと、チェック中のページにリダイレクトされます.), 我々は、より多くの情報をここで見つけました https://velog.io/@titu/Nginx-특정-IP만-접근-가능하도록-허용-그-이외는-점검중-페이지로-redirectテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol