Назад | Перейти на главную страницу

Настройка Nginx / PHP-FPM 404 / 5xx для внешних устройств

Итак, я недавно пытался помочь сообществу, создавая конфигурацию nginx vhost на основе pimcore. Насколько я могу судить, все работает очень хорошо, за исключением одной небольшой проблемы. Если какая-либо из страниц (cms-страницы), например, потребляют RSS-канал, а RSS-канал возвращает ошибку 503 (недоступен / 404 и т. Д.), Тогда вся страница перенаправляется на страницу ошибки 503/404 вместо того, чтобы просто отключить загрузку этого пункт. Эта проблема не проявляется в apache.

Возникающая проблема: допустим, например, / about - это страница cms, которая включает RSS-канал. Страница «О нас» действительна, однако фид, который будет использован и отображаться на странице, возвращает ошибку 503. Похоже, что Nginx подбирает включенный актив и перенаправляет страницу верхнего уровня (/ about) на страницу с ошибкой вместо того, чтобы отображать большую часть страницы. Конфигурация на данный момент немного грязная, но полностью работает, так как я пробовал много разных вещей, чтобы сделать эту работу, но я не могу найти правильный набор настроек для устранения проблемы. Настройка интернета; значение внутри / или .php тоже ничего не меняет.

Если кто-то может помочь мне с этой проблемой, я могу поработать над защитой фактического корня документа, прежде чем добавлять его обратно в документацию сообщества.

Стандартный vhost использует:

server {
   listen 80;
   server_name _;
   root /data/www/pimcore;
   access_log /var/log/nginx/$host-access.log;
   error_log  /var/log/nginx/pimcore-error.log debug; 
   include /etc/nginx/conf.d/_tpl/pimcore.cf;
}

Файл pimcore.cf, который я загружаю для каждого виртуального хоста, выглядит следующим образом:

index index.php index.html index.htm;

location ~* \.(js|css|png|jpg|jpeg|gif|ico|xml|swf|flv|eot|ttf|woff|pdf|xls|htc)$ {
    access_log        off;
    log_not_found     off;
    expires           360d;
    add_header Pragma "public";
    add_header Cache-Control "public, must-revalidate, proxy-revalidate";
    access_log off;
    try_files       /$uri $uri/ /website/var/assets$uri /website/var/(tmp|assets|plugins|areas)$uri /plugins/.*/static$uri /index.php?$args;
}

location @pimcore{
    try_files       $uri =200;
}
location ~* \.php$ {
    try_files       /$uri $uri/ /index.php?$args =200;
    fastcgi_index   index.php;
    #fastcgi_pass    127.0.0.1:9000;
    fastcgi_pass   unix:/var/lib/php/php.sock;
    include         fastcgi_params;
    fastcgi_param   SCRIPT_FILENAME    $document_root$fastcgi_script_name;
    fastcgi_param   SCRIPT_NAME        $fastcgi_script_name;
    internal;
}
location / {
    # First attempt to serve request as file, then as directory, then fall back to index.html
    #       try_files $uri $uri/ /index.php/$request_uri;
    try_files /$uri $uri/ /index.php?$args;
    error_page 404 500 501 503 = @pimcore;
}
location = /favicon.ico {
    log_not_found off;
    access_log off;
}

location = /robots.txt{ 
    access_log off; 
    log_not_found off; 
}

location ~ /.ht {
    deny all;
    access_log off;
    log_not_found off;
}