Nginx запрещает доступ ко всем файлам PHP, кроме одного, с определенных IP-адресов

Я пытаюсь запретить доступ ко всем нашим сценариям 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, Заранее спасибо.

1
задан 9 March 2017 в 12:16
1 ответ

Нужно понять порядок оценки блоков расположения . Подробности см. в этом документе .

Простым решением было бы изменение местоположения префикса на точное совпадение. Например:

location = /goodpage.php {
    ...
}

Как указывает сирота, утверждение отрицает все; должно быть после любого более конкретного утверждения разрешающего. Подробности см. в настоящем документе .

.
1
ответ дан 3 December 2019 в 23:33

Теги

Похожие вопросы