
我正在嘗試從 apache 遷移到 nginx。我託管的 php 網站需要存取一個共享庫,該庫原來是一個別名目錄。下面是我想出的配置。 html 檔案運作正常,但 php 檔案給出 404。關於我的情況可能導致問題的原因有什麼提示嗎?
location /wtlib/ {
alias /var/www/shared/wtlib_4/;
index index.php;
}
location ~ /wtlib/.*\.php$ {
alias /var/www/shared/wtlib_4/;
try_files $uri =404;
if ($fastcgi_script_name ~ /wtlib(/.*\.php)$) {
set $valid_fastcgi_script_name $1;
}
fastcgi_pass 127.0.0.1:9013;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/shared/wtlib_4$valid_fastcgi_script_name;
fastcgi_param REDIRECT_STATUS 200;
include /etc/nginx/fastcgi_params;
}
謝謝大家!
更新:以下似乎運作正常:
location /wtlib/ {
alias /usr/share/php/wtlib_4/;
location ~* .*\.php$ {
try_files $uri @php_wtlib;
}
location ~* \.(html|htm|js|css|png|jpg|jpeg|gif|ico|pdf|zip|rar|air)$ {
expires 7d;
access_log off;
}
}
location @php_wtlib {
if ($fastcgi_script_name ~ /wtlib(/.*\.php)$) {
set $valid_fastcgi_script_name $1;
}
fastcgi_pass $byr_pass;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/share/php/wtlib_4$valid_fastcgi_script_name;
fastcgi_param REDIRECT_STATUS 200;
include /etc/nginx/fastcgi_params;
}
答案1
您的線路try_files $uri =404;
是原因,但您可以改進您的配置:
server {
# other code ...
index index.php;
location /wtlib/ {
alias /var/www/shared/wtlib_4/;
location ~* .*\php$ {
try_files $uri @php;
}
}
location @php {
fastcgi_pass 127.0.0.1:9013;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param REDIRECT_STATUS 200;
include /etc/nginx/fastcgi_params;
}
}