Ich habe ein PHP-Skript, das das Skript-Routing verwaltet und alle möglichen ausgefallenen Dinge erledigt. Es wurde ursprünglich für Apache entwickelt, aber ich versuche, es für einige meiner Boxen auf Nginx zu migrieren. Im Moment versuche ich, Dinge auf einem Testserver zu glätten.
Das Skript funktioniert also so, dass es den gesamten HTTP-Verkehr für das Verzeichnis (in Apache) mithilfe einer .htaccess
Datei abfängt . So sieht das aus:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.+$ index.php [L]
</IfModule>
Ziemlich einfach. Alle Anfragen werden index.php
schlicht und einfach durchlaufen .
Ich möchte dieses Verhalten auf Nginx nachahmen, habe aber noch keinen Weg gefunden. Hat jemand irgendwelche Vorschläge?
Hier ist eine Kopie meiner nginx.conf
Datei im Moment. Beachten Sie, dass es für mich entwickelt wurde, um nur zu versuchen, es zum Laufen zu bringen. meistens ein Kopier- / Einfügejob.
user www-data;
worker_processes 1;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
# multi_accept on;
}
http {
include /etc/nginx/mime.types;
default_type text/plain;
include /etc/nginx/conf.d/*.conf;
server {
listen 80;
server_name swingset.serverboy.net;
access_log /var/log/nginx/net.serverboy.swingset.access_log;
error_log /var/log/nginx/net.serverboy.swingset.error_log warn;
root /var/www/swingset;
index index.php index.html;
fastcgi_index index.php;
location ~ \.php {
include /etc/nginx/fastcgi_params;
keepalive_timeout 0;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass 127.0.0.1:9000;
}
}
}
Nachdem Sie das Root-Verzeichnis festgelegt haben, fügen Sie dies hinzu
Je nach Bedarf können Sie den regulären Ausdruck ändern, wenn Sie die Regel query_string in index.php festlegen müssen
quelle
if
zu erreichen, was er verlangt. wiki.nginx.org/IfIsEvilVerwenden Sie Folgendes, um GET-Argumente beizubehalten:
$ is_args wird zu '?' wenn $ args nicht leer ist
Oder noch einfacher:
quelle
Ein sehr wichtiger pitfall vorsichtig zu sein , wenn Ihr Ziel ist eine PHP - Datei ist, zu überprüfen , was
return
/rewrite
Regel , die Sie verwenden nicht die supercedelocation ~ \.php
Richtlinie. In diesem Fall stellt nginx Ihre PHP-Datei bereit, ohne sie zu rendern, und zeigt den PHP-Quellcode an. Dies kann katastrophal sein.Der sicherste Weg ist bereits vorgesehen,
location / { try_files $uri $uri/ /index.php; }
Stellen Sie sicher, dass Sie auch
index index.php
Ihrenlocation /
Block festlegen und denlocation ~ \.php
in der Standardkonfigurationsdatei enthaltenen Block auskommentieren.quelle