2013-08-26 4 views
-1

Это работает:Нельзя комбинировать псевдоним с fastcgi_cache в Nginx

location ~ ^/special/(.+\.php)$ { 
    alias /var/special/$1; 
    try_files "" =404; 
    include fastcgi_params; 
    fastcgi_pass 127.0.0.1:9000; # php-fpm socket 
} 

Но это не делает:

location ~ ^/special/(.+\.php)$ { 
    alias /var/special/$1; 
    try_files "" =404; 
    include fastcgi_params; 
    fastcgi_pass 127.0.0.1:9000; # php-fpm socket 
    fastcgi_cache mycache; 
} 

Если я пытаюсь перейти к URL «/special/index.php «Я получаю« Файл не найден ». текст в браузере, который, как я полагаю, исходит из php-fpm или PHP. И я получаю эту ошибку в журнале Nginx:

FastCGI sent in stderr: "Primary script unknown", client: 202.179.27.65, server: myserver.org, request: "GET /special/index.php HTTP/1.1", host: "myserver.org" 

Любая идея, почему добавление fastcgi_cache нарушает это?

Обратите внимание, что fastcgi_cache работает нормально, когда я использую местоположение, которое не использует псевдоним. (!)

ответ

0

Через несколько дней возился с ним, это изменение кажется работать:

location ~ ^/special(/.+\.php)$ { 
    root /var/special; 
    try_files "" =404; 
    include fastcgi_params; 
    fastcgi_pass 127.0.0.1:9000; # php-fpm socket 
    fastcgi_cache mycache; 
    fastcgi_param SCRIPT_FILENAME $document_root$1; 
    fastcgi_param SCRIPT_NAME $1; 
} 

То, что казалось, чтобы сделать разницу в 1) с использованием «корень», который, кажется, требуется с помощью fastcgi_cache и 2) явно устанавливая SCRIPT_FILENAME и SCRIPT_NAME, потому что иначе «root» не будет работать (даже без fastcgi_cache).

Смежные вопросы