nginx - nginx リバースプロキシ環境
WordPressの管理画面へのアクセスをIPアドレスで制限
WordPressのインストールやデータベースの移行でDuplicatorを使用する等、暫くの間だが【WordPressの管理画面だけへのアクセス中】状態が『本番環境』で発生する。
WordPressの管理画面へのアクセスを、
〇 ローカルアドレスのクライアントみ許可し、
✖ その他外部からのアクセスを遮断したい。
②.渡されたIPアドレスで、WordPressの管理画面へのアクセスを制限する。
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
location / {
proxy_pass https://192.168.11.106;
proxy_set_header Host $http_host;
proxy_set_header Connection "";
proxy_set_header X-Real-IP $remote_addr; # x-real-ipにクライアントIPを設定。APIへ渡す。
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # X-Forwarded-For に直前のProxy(=ELB)を追加
set_real_ip_from 192.168.11.104;
real_ip_header X-Forwarded-For;
# # WordPress 管理画面へのアクセス制限 その1
location = /wp-admin {
allow 192.168.11.1;
deny all;
fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# # WordPress 管理画面へのアクセス制限 その2
location = /wp-admn/admin-ajax.php {
allow all;
fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# # WordPress 管理画面へのアクセス制限 その3
location = /wp-login.php {
allow 192.168.11.1;
deny all;
fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# # #####
※2:クライアントのIPアドレスは、実際のアドレスではなく、「ルーターのIPアドレス」を指定。
※3:「Duplicator」の【installer.php】も制限すべきではと思ったが、設定の『 [name]_[hash]_[date]_installer.php (recommended)』で対応することにした。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>クライアントの IPアドレスを表示</title>
</head>
<body>
<h1>JavaScriptとPHPでIP取得</h1>
<script type="text/javascript" src="./ip-php.php"></script>
<script>
document.write('<P>javascriptでのIP表示:' + IP + '</P>');
</script>
</body>
</html>
<?php
$IP = $_SERVER['REMOTE_ADDR'];
//スクリプトの出力
echo "document.write('PHPでのIP表示:" . $IP . "');";
echo "var IP = '" . $IP . "';";
?>
この結果、同じルーター内の全てのPCからのアクセスを許可することになり、便利なのか・不便なのか迷う。
# # WordPress 管理画面へのアクセス制限 その3
location = /wp-login.php {
allow 192.168.11.1;
deny all;
access_log off;
error_log off;
fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
(2020.08.17)