Я хочу заблокировать доступ к сайту промежуточного сервера для всех, кроме моего IP.Проблема в том, что одна из страниц имеет динамический URL, и по какой-то причине я все еще могу получить доступ к этой странице с помощью других IP-адресов.
location / {
satisfy any;
# allow my ip
allow 1.2.3.4;
# drop rest of the world
deny all;
auth_basic "Authentication Required";
auth_basic_user_file /etc/nginx/passwd;
index index.php index.html index.htm;
# remove .php extension
try_files $uri $uri/ @rewrite;
sendfile off;
rewrite ^/color/(.*)$ /color.php?url=$1&name=&submitBtn=check;
}
location @rewrite {
rewrite ^ $uri.php last;
}
Приведенный выше код позволит моему IP-адресу получить доступ к любой странице сайта безпароль, но кому-либо еще будет предложено ввести пароль, прежде чем ему будет предоставлен доступ.
Это работает на всех страницах, кроме страницы с динамическим URL.На странице с динамическим URL-адресом пароль отображается при доступе к странице с разных IP-адресов, но страница все еще загружается, поэтому пароль бесполезен.
Я пытался присвоить динамическому URL-адресу свой собственный блок location
, иэто работает при блокировке доступа всех IP-адресов (кроме моего IP-адреса) к динамической странице без предварительного ввода пароля, но при этом я получаю ошибку 404
при попытке доступа к динамической странице с моего IP-адреса.
location / {
...
}
location ~ ^/color/(.*)$ {
satisfy any;
# allow my ip
allow 1.2.3.4;
# drop rest of the world
deny all;
auth_basic "Authentication Required";
auth_basic_user_file /etc/nginx/passwd;
}
РЕДАКТИРОВАТЬ: Я думаю, что перезаписанный URL-адрес является причиной проблемы, например rewrite ^/color/(.*)$ /color.php?url=$1&name=&submitBtn=check;
, потому что я также могу перейти к mysite.com/color
, и это также загружает для других IP-адресов, даже если отображается поле пароля браузера.