Ich habe ein altes Projekt, das jetzt neue Funktionen erfordert, ich werde Laravel verwenden, um es bereitzustellen, alles funktioniert in xampp mit Apache, aber mein Server con nginx zeigt mir eine Zugriffsverweigerungsnachricht und kann nicht auf meine Routen zugreifen, wie sollte meine sein Site-Konfiguration sollte sein, wenn Laravel in mysite.com/2015 installiert ist. Meine Site-Konfiguration lautet wie folgt. Was muss ich ändern? Ich habe versucht
server {
listen 80;
server_name am2.aminversiones.com;
root /home/forge/am2.aminversiones.com;
# FORGE SSL (DO NOT REMOVE!)
# ssl_certificate;
# ssl_certificate_key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
index index.html index.htm index.php;
charset utf-8;
client_max_body_size 300M;
location / {
#try_files $uri $uri/ /index.php?$query_string;
try_files $uri $uri/ /index.php?q=$uri&$args;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
access_log off;
error_log /var/log/nginx/am2.aminversiones.com-error.log error;
error_page 404 /index.php;
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# Remove trailing slash to please routing system.
if (!-d $request_filename) {
rewrite ^/(.+)/$ /$1 permanent;
}
# version 1
location ^~ /2015 {
alias /home/forge/am2.aminversiones.com/2015/public;
try_files $uri $uri/ @2015;
location ~* \.php {
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_split_path_info ^(.+\.php)(.*)$;
include /etc/nginx/fastcgi_params;
}
}
location @2015 {
rewrite ^/2015/(.*)$ /2015/index.php/$1 last; # THIS IS THE IMPORTANT LINE
}
# end version 1
# version 2
# this is with `ln -s /home/tom/public_html/demos/demo1/public <document root>/demo1`
location ~ /2015 {
try_files /2015/$uri /2015/$uri/ /2015/index.php?q=$uri&$args;
}
# end version 2
# PHP FPM configuration.
location ~* \.php$ {
fastcgi_pass unix:/var/run/php5-fpm.sock;
include /etc/nginx/fastcgi_params;
fastcgi_index index.php;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
# We don't need .ht files with nginx.
location ~ /\.ht {
deny all;
}
}
Lu32
Nun, ich habe eine Lösung für eine sehr einfache Konfiguration gefunden und Laravel in einem Unterverzeichnis auf einem Nginx-Server installiert. Fügen Sie in der Konfigurationsdatei /etc/nginx/sites-available/yourSite Folgendes hinzu:
und voila, Ihre Routen funktionieren normal, wie sie sollten.
Dies hat ein Problem behoben, das ich seit einigen Tagen hatte. Vielen Dank
– cfv1000
28. Mai 2015 um 13:56 Uhr
Das funktioniert super, aber wenn ich das tue: example.org/laravel/?var=12345 es wird mir einen 404-Fehler geben. Irgendwelche Ideen, wie man es löst, Grüße!
– Alberto
19. Juni 2015 um 15:31 Uhr
@Alberto stellen Sie sicher, dass Sie nginx und php5-fpm neu laden
– Lu32
19. Juni 2015 um 21:07 Uhr
Das funktioniert nicht. Es zwingt PHP-Dateien herunterzuladen, anstatt bedient zu werden
– Sebastian
18. November 2020 um 21:33 Uhr
Hamid Naghipour
Nachdem ich einige Stunden mit diesem Problem verbracht habe, habe ich endlich mein Problem mit einer Subdomain-Adresse wie folgt behoben:
Wenn Sie Ihre setzen möchten laravel Projekt in einem subfolder auf einem Server mit ngnix-ubuntu 16-php.7.2also hier ist die ngnix-Konfiguration:
Ihr verschachtelter (Unterordner) befindet sich nicht in Ihrem Hauptordner
Danke, die erste Option funktioniert. Und warum rewrite /nested/(.*)$ /nested/index.php?/$1 last; aber nicht rewrite /nested/(.*)$ /nested/public/index.php?/$1 last; ?
– X-NicON
24. April 2019 um 14:45 Uhr
Es gibt keinen Unterschied zwischen den 2 Konfig
– Sandor Marton
27. Dezember 2019 um 23:57 Uhr
Das ist jetzt eine Antwort. Vielen Dank, dass Sie sich die Zeit genommen haben.
– Paschalis
23. April 2020 um 19:21 Uhr
Danke für die Lösung! Ich habe lange nach einer Lösung für dieses Problem gesucht.
– Pawel Taschew
3. Oktober 2020 um 11:21 Uhr
Ich freue mich, berichten zu können, dass ich das ausprobiert habe und es funktioniert hat. Ich verwende Homestead, das Nginx verwendet.
– ryantxr
8. Mai 2021 um 19:25 Uhr
Dies ist die Problemumgehung, die mein Problem gelöst hat. Mit Alias sucht Nginx NICHT nach Dateien in /var/www/portal/public/portal/foo, wie es mit der Root-Direktive der Fall wäre
location /portal {
alias /var/www/html/portal/public; #preferred over root
# @portal is a named location
try_files $uri $uri/ @portal;
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $request_filename;
}
}
location @portal {
rewrite /portal/(.*)$ /portal/index.php last; # Remove ?/$1 since fastcgi_params adds query string
}
Dies ist die einzige Antwort, die ich im gesamten Internet gefunden habe und darüber hinaus funktioniert. Der wichtigste Teil ist: entfernen ?/$1. Entfernen Sie es nicht und Ihre Abfragezeichenfolgen werden alle kläglich fehlschlagen. Danke vielmals!
– Bloops
5. April 2021 um 1:36 Uhr
In meinem Fall hat dies funktioniert, weil andere nginx.conf-Vorschläge verwendet werden fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;jedoch war es die Verwendung von fastcgi_param SCRIPT_FILENAME $request_filename; was endlich meinen Server repariert und mir Seelenfrieden verschafft hat.
– Camilo Urán
21. August 2021 um 20:52 Uhr
Vielen Dank für Ihren Kommentar. Entfernen Sie diese 4 Zeichen ?/$1funktioniert gut für mich. Bis zu einem Laravel 8-Update funktionierte mein System gut mit diesen Charakteren, dann fügte Laravel hinzu $request->server->get('QUERY_STRING') zur Auswertung einer signierten Route, was mein System in Probleme brachte. Jetzt gelöst.
– LaDude
20. Dezember 2021 um 10:30 Uhr
Aus irgendeinem Grund verursachte der Alias das Problem und funktionierte nicht. Vielleicht hilft dies anderen, also habe ich Folgendes getan, damit dies funktioniert. Wie Sie sehen können, habe ich den “Alias” daraus entfernt und der Gleichung laravel/public hinzugefügt.
Leider wird Laravel die URL verwenden http://generic.laravel Verknüpfungen zu erstellen. Sie können es folgendermaßen lösen: Laravel: Basis-URL ändern?
Herr Alexander Ws
Ich habe mehrere Fälle wie Fehler 403 oder 404 getroffen, und ich denke, diese Methode funktioniert. Vergessen Sie nicht, die PHP-Version basierend auf Ihrer PHP-Version auf dem Server zu ändern (php8.1-fpm.sock). Notiz your_domain www.your_domain basiert auf Ihrer Website.
Vergessen Sie nach der Konfiguration nicht, dies Ihrem Symlink hinzuzufügen systemctl restart nginx. Ich bin mir sicher, dass Laravel 8 und 9 immer noch funktionieren, da ich erst kürzlich das Laravel 9-Projekt im Unterordner getestet habe und gut funktioniert.