Я создал основной сервер для клиента, и сказал клиенту нужно, чтобы это было основано на Nginx (я обычно использую Apache для серверов на базе PHP)Поймать PHP ошибки 404 с Nginx и FastCGI
Это рабочая конфигурация.
server {
listen 80;
server_name localhost;
auth_basic "My web site";
auth_basic_user_file "/usr/local/nginx/www_passwd";
location ~ ^/(?:share|conf) {
deny all;
}
location ~ /\.ht {
deny all;
}
location ~ /\.svn {
deny all;
}
location/{
root /var/www;
index index.php index.html index.htm;
}
location ~ \.php$ {
root "/var/www";
fastcgi_pass unix:/etc/phpcgi/php-cgi.socket;
fastcgi_index index.php;
fastcgi_intercept_errors on;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Это прекрасно работает для большей части программы. Однако я не могу уловить ошибки PHP 404, и это необходимо для модуля.
Модуль находится в директории под названием «extra_app»
Так что я попытался добавить это внутри выше конфигурации:
location ~ ^/extra_app/([a-zA-Z0-9\.])$ {
error_page 404 = /var/www/extra_app/index.php;
root /var/www/extra_app/;
index index.php index.html index.htm;
}
Мне нужно, чтобы иметь возможность перехватывать ошибки 404 из запросов PHP-файлов в/extra_app /. Я добавил это к .php секции выше конфигурации:
fastcgi_intercept_errors on;
Этот hasnt имел никакого эффекта. (Да, я перезапустил службу nginx!)
Кто-нибудь знает о решении?
Спасибо!
[EDIT]
Я не уверен, если страница 404 ошибки нужна ... Может быть, «mod_rewrite» правила могут быть написаны для Nginx? Я новичок в nginx, я даже не уверен, что вы можете переписать URL-адреса ...
Я думаю, что 'error_page' может просто понять это. Вы можете прочитать [оригинальный документ] (http: // nginx. орг/EN/документы/HTTP/ngx_http_core_module.html # error_page). – akawhy