
Ich versuche, von Apache auf Nginx zu migrieren. Die von mir gehosteten PHP-Sites müssen auf eine gemeinsam genutzte Bibliothek zugreifen, die sich als Alias-Verzeichnis herausstellt. Unten sehen Sie die Konfiguration, die ich erstellt habe. HTML-Dateien funktionieren einwandfrei, aber PHP-Dateien geben 404 aus. Ich habe die meisten (wenn nicht alle) Antworten auf ähnliche Fragen durchgelesen und ausprobiert, ohne Erfolg. Irgendein Hinweis darauf, was das Problem in meinem Fall verursachen könnte?
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;
}
Danke an alle!
Update: Folgendes scheint einwandfrei zu funktionieren:
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;
}
Antwort1
Ihre Zeile try_files $uri =404;
ist der Grund, aber Sie könnten Ihre Konfiguration verbessern:
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;
}
}