Wie man richtig konfigurieren alias-Direktive im nginx?
Ich habe versucht, konfigurieren Sie mehrere webapp auf meinem nginx webserver aber ich kann nicht die Arbeit einer Laravel-app, die erfordert, dass $document_root gesetzt laravel öffentlichen Ordner.
Ich bin versucht derzeit, konfigurieren Sie es mithilfe von alias-Richtlinie, sondern für eine obskure Grund, warum dies nicht funktioniert. Hier ist, was ich versuche zu tun.
# Default server configuration
#
server {
listen 80;
# SSL configuration
#
listen 443 ssl;
error_log /var/log/nginx/error.log warn;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
set $root_path '/var/www/html';
root $root_path;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html index.php;
server_name localhost;
location /paperwork {
alias /var/www/html/paperwork/frontend/public;
try_files $uri $uri/;
#location ~ \.php {
# fastcgi_split_path_info ^(.+\.php)(.*)$;
# fastcgi_pass unix:/var/run/php5-fpm.sock;
# include /etc/nginx/fastcgi_params;
# #fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;
# #fastcgi_intercept_errors on;
#}
}
#location @paperwork {
# rewrite /paperwork/(.*)$ /paperwork/index.php/$1 last;
#}
location / {
}
location /wallabag {
try_files $uri $uri/ /index.php;
}
location /laverna {
try_files $uri/ /index.php;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
# With php5-cgi alone:
#fastcgi_pass 127.0.0.1:9000;
# With php5-fpm:
fastcgi_split_path_info ^(.+\.php)(/.+)$;
#try_files $uri $uri/=404;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
location ~ /\.ht {
deny all;
}
}
Zum testen meiner "alias" config lege ich ein 'test.php' Dateien in /var/www/html/paperwork/frontend/public/test.php und den Zugriff versucht es über https://IP/paperwork/test.php. Ich bekomme einen 404-Fehler und nichts in der nginx error log.
Wenn ich versuche https://IP/paperwork/frontend/public/test.php im browser zeigt es test.php Datei-ohne Fehler.
Nichts ändern, wenn ich die Auskommentierung try_files Zeile in die php-location.
Wenn ich kopieren test.php zu /var/www/html/paperwork/test2.php und der Zugang zu https://IP/paperwork/test2.php die Datei angezeigt ohne Fehler, so kann ich hier sehen, dass alias nicht funktioniert, da nicht mehr ein test2.php für den Papierkram öffentlichen Verzeichnis.
Kann ich ein anderes Verhalten wenn ich die Auskommentierung in php Standort innerhalb Papierkram Lage. Mit diesem, Anfragen wie https://IP/paperwork/test.php nicht angezeigt, 404, sondern einen leeren Bildschirm.
Habe ich durch viele Foren /Fragen zu diesem, aber ich konnte nicht eine funktionierende config für eine einfache Aufgabe wie die Anzeige test.php...
Dank !
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fand ich die Lösung. Es scheint, dass eine falsche Anfrage gesendet wurde, für php-Dateien. Wenn alias verwendet wird, ist es zu empfehlen die $request_filename statt $fastcgi_script_name.
Hier ist mein Ort block :
Dies löste mein problem für mein 'test.php' Datei wird nun ausgeführt, während das erreichen https://IP/paperwork/test.php. So alias arbeitet und php ist gut ausgeführt.
Ich habe noch ein problem, wenn Sie versuchen, um zu erreichen, index.php' (das ist mein laravel-app-index). Datei gefunden wird, aber nicht ausgeführt werden, sondern es wird heruntergeladen. Also, wenn ich erreichen https://IP/paperwork/index.php bekomme ich einen login-Datei heruntergeladen, die index.php Datei. Ich bekomme das selbe Verhalten, wenn ich versuche /paperwork/index.php/login oder /Papierkram/login.
$request_filename
. Jedes andere Beispiel hattefastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name
aber das hat nicht funktioniert.alias /some/path;
+fastcgi_param SCRIPT_FILENAME $request_filename;
Anforderungen der Richtlinieindex index.php;
an einem Ort Niveau zu arbeiten, mitindex.php
auch