Я пытаюсь запретить доступ ко всем нашим сценариям PHP, кроме одного, для всего внешнего мира, кроме одного IP.
location / {
deny all;
allow <one-ip-address>;
error_page 403 goodpage.php;
try_files $uri $uri/ =404;
}
location ~ \.php$ {
deny all;
allow <one-ip-address>;
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
location /goodpage.php {
allow all;
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
}
Однако, что бы я ни делал, я всегда ограничиваю все * .php или ничего. Установка - Ubuntu 16.04, Nginx 1.10.0, Заранее спасибо.
Нужно понять порядок оценки блоков расположения
. Подробности см. в этом документе .
Простым решением было бы изменение местоположения префикса на точное совпадение. Например:
location = /goodpage.php {
...
}
Как указывает сирота, утверждение отрицает все;
должно быть после любого более конкретного утверждения разрешающего
. Подробности см. в настоящем документе .