Добрые сутки!
Столкнулся с непонятной мне проблемой. nginx 1.4.1. Имеется связка nginx + php-fpm. Возникла необходимость в одном домене заблокировать несколько ip адресов для режима post. Написал вот такой листинг:
location ~ \.php$ {
if ($request_method = POST) {
return 412;
}
error_page 412 = @check;
try_files $fastcgi_script_name =404; # Проверка наличия скрипта, иначе ошибка 404
fastcgi_pass unix:/var/run/php-fpm-pool.sock;
fastcgi_index index.php;
include fastcgi_params;
}
location @check
{
deny ip1;
deny ip2;
error_page 403 http://sitename.ru/error_blocked.html;
try_files $fastcgi_script_name =404; # Проверка наличия скрипта, иначе ошибка 404
fastcgi_pass unix:/var/run/php-fpm-pool.sock;
fastcgi_index index.php;
include fastcgi_params;
}
В секции "/" лежат простые rewrite на подобие этого:
location /
{
rewrite ^/(.+)\.(html|htm)$ /index.php
}
Однако, все равно мне выводится стандартное уведомление об ошибке. Я пробовал вместо адреса с http указывать новый location:
error_page 403 @why;
Не работает! Пробовал указывать новый путь:
error_page 403 /error_403.html;
не работает!!!!
В связи с этим вопросы:
1) Перенаправление на проверку явно сделано не самым удобным образом (через пененаправление error_page 412), может кто-то подскажет способ лучше?
2) Что я делаю не так с error_page? Мне нужно, чтобы он открыл заготовленный файл с расшифровкой "почему нельзя" и все.
Заранее спасибо!
Столкнулся с непонятной мне проблемой. nginx 1.4.1. Имеется связка nginx + php-fpm. Возникла необходимость в одном домене заблокировать несколько ip адресов для режима post. Написал вот такой листинг:
location ~ \.php$ {
if ($request_method = POST) {
return 412;
}
error_page 412 = @check;
try_files $fastcgi_script_name =404; # Проверка наличия скрипта, иначе ошибка 404
fastcgi_pass unix:/var/run/php-fpm-pool.sock;
fastcgi_index index.php;
include fastcgi_params;
}
location @check
{
deny ip1;
deny ip2;
error_page 403 http://sitename.ru/error_blocked.html;
try_files $fastcgi_script_name =404; # Проверка наличия скрипта, иначе ошибка 404
fastcgi_pass unix:/var/run/php-fpm-pool.sock;
fastcgi_index index.php;
include fastcgi_params;
}
В секции "/" лежат простые rewrite на подобие этого:
location /
{
rewrite ^/(.+)\.(html|htm)$ /index.php
}
Однако, все равно мне выводится стандартное уведомление об ошибке. Я пробовал вместо адреса с http указывать новый location:
error_page 403 @why;
Не работает! Пробовал указывать новый путь:
error_page 403 /error_403.html;
не работает!!!!
В связи с этим вопросы:
1) Перенаправление на проверку явно сделано не самым удобным образом (через пененаправление error_page 412), может кто-то подскажет способ лучше?
2) Что я делаю не так с error_page? Мне нужно, чтобы он открыл заготовленный файл с расшифровкой "почему нельзя" и все.
Заранее спасибо!