2016-06-02 5 views
1

Ich bin ein Amateur-Front-End-Web-Entwickler, und ich kaufte vor kurzem einen Ubuntu-Server, um zu versuchen, bei einigen Back-End-Entwicklung. Ich versuche herauszufinden, wie man eine PHP-Datei aus einem Alias-Location-Block mit php5-fpm bedienen kann. Ich bekomme einen 404 - Seite nicht gefunden Fehler. Ich habe alle vorgeschlagenen Lösungen ausprobiert, die ich hier ohne Glück finden konnte. Da ich noch ein Anfänger bin, würde ich auch einen schnellen ELI5 und irgendwelche Hinweise auf den Rest meiner Conf-Datei lieben, damit ich auch etwas lernen kann. Ich sollte erwähnen, dass der Hauptstammordner eine Flaschen-App ausführt, und das ist der Grund, warum ich einen Alias-Speicherort verwende.Nginx + php5-fpm = 404 Fehler mit Alias-Location

Mein virtuellen Host:

Nginx conf Datei

server { 
listen 80; 
listen [::]:80; 
server_name www.example.com example.com; 

root /var/www/example; 
large_client_header_buffers 8 32k; 
access_log /var/www/example/logs/access.log; 
error_log /var/www/example/logs/error.log; 


location/{ 
    proxy_http_version 1.1; 
    proxy_set_header Upgrade $http_upgrade; 
    proxy_set_header Connection "upgrade"; 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header X-Forwarded-For $remote_addr; #$proxy_add_x_forwarded_for; 
    proxy_set_header Host $http_host; 
    proxy_set_header X-NginX-Proxy true; 
    proxy_pass http://app_test; 
    proxy_redirect off; 
} 


location /test_site { 
    alias /var/www/test_site; 
    index index.php index.html index.htm; 
    location ~ .php$ { 
       try_files $uri =404; 
       fastcgi_split_path_info ^(.+?\.php)(/.*)?$; 
       fastcgi_pass unix:127.0.0.1:9000; 
       fastcgi_index index.php; 
       include fastcgi_params; 
    } 
    } 

php5 www.conf Datei

[www] 
... 
user = www-data 
group = www-data 


listen = 127.0.0.1:9000 
#listen = /tmp/php5-fpm.sock 

listen.owner = www-data 
listen.group = www-data 
listen.mode = 0660 
... 

Meine fastcgi_params Datei ist Standard. Ich habe sowohl die php und nginx Logs überprüft und es gibt keine Fehler. Jede Hilfe würde sehr geschätzt werden!

Antwort

0

Es ist kompliziert, alias mit verschachtelten Standorten mit fastcgi zu arbeiten.

Unter der Annahme, dass Sie nicht über die Konfiguration vereinfachen, der test_site Standort muss nicht alias verwenden:

location /test_site { 
    root /var/www; 
    index index.php index.html index.htm; 
    location ~ \.php$ { 
     try_files $uri =404; 
     fastcgi_pass unix:127.0.0.1:9000; 
     include fastcgi_params; 
    } 
} 

Dies entfernt die alias Richtlinie, und löst das Aliasing-Problem in dem PHP-Block.

Beachten Sie auch: Die Regex auf dem location ~ \.php$ Block war falsch. Die fastcgi_split_path_info und fastcgi_index Direktiven sind nicht notwendig.

Die nginx Direktiven sind documented here.