hat jemand path_info unter nginx zum laufen gebracht?
ich brauche das für das woltlab burning board 4.0 (zwingend erforderlich)
ungern würde ich die lua files bearbeiten, kennt da jemand einen trick um das auch mit liveconfig zum laufen zu bringen?
hat jemand path_info unter nginx zum laufen gebracht?
ich brauche das für das woltlab burning board 4.0 (zwingend erforderlich)
ungern würde ich die lua files bearbeiten, kennt da jemand einen trick um das auch mit liveconfig zum laufen zu bringen?
hätte zwar eine mögliche modifikation aber da die funktion writePHPconfig in der nginx.lua als local geflagt ist kann ich selbige nicht überschreiben, ungern möchte ich direkt in der nginx.lua rumpfuschen
ein ticket ist bereits per email geöffnet ob man nicht ggf in zukunft den local flag entfernen kann
für alle die es interessiert wäre hier die anpassung (funktioniert nur wenn man in der nginx.lua den local flag entfernt)
ZitatAlles anzeigen
function nginx.writePHPconfig(fh, opts, php)
local suffix = "." .. php
if php == "" or php == "php5" then suffix = "" end
fh:write("\n\t# PHP is enabled\n")
fh:write("\tindex index.php index.html index.htm;\n")
fh:write("\tlocation ~ \\.php {\n")
fh:write("\t\tfastcgi_split_path_info ^(.+\.php)(/.+)$;\n")
fh:write("\t\ttry_files $fastcgi_script_name =404;\n")
fh:write("\n")
fh:write("\t\t# Bypass the fact that try_files resets $fastcgi_path_info\n")
fh:write("\t\t# see: http://trac.nginx.org/nginx/ticket/321\n")
fh:write("\t\tset $path_info $fastcgi_path_info;\n")
fh:write("\t\tfastcgi_param PATH_INFO $path_info;\n")
fh:write("\n")
fh:write("\t\tfastcgi_index index.php;\n")
fh:write("\t\tinclude fastcgi_params;\n")
fh:write("\t\tfastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;\n")
fh:write("\t\tfastcgi_pass unix:", opts.path, "/conf/sockets/nginx-php-fcgi", suffix, ".sock;\n")
fh:write("\t}\n")
end
(hatte noch eine andere schreibweise die ich aber wegen "IfIsEvil" https://www.nginx.com/resource…rt/topics/depth/ifisevil/ umgebastelt habe)
ZitatAlles anzeigen
function nginx.writePHPconfig(fh, opts, php)
local suffix = "." .. php
if php == "" or php == "php5" then suffix = "" end
fh:write("\n\t# PHP is enabled\n")
fh:write("\tindex index.php index.html index.htm;\n")
fh:write("\tlocation ~ \\.php {\n")
fh:write("\t\tfastcgi_split_path_info ^(.+\\.php)(/.+)\$;\n")
fh:write("\t\tinclude /etc/nginx/fastcgi_params;\n")
fh:write("\t\tfastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;\n")
fh:write("\t\tfastcgi_index index.php;\n")
fh:write("\t\tif (!-e \$document_root\$fastcgi_script_name) {\n")
fh:write("\t\t\treturn 404;\n")
fh:write("\t\t}\n")
fh:write("\t\tfastcgi_pass unix:", opts.path, "/conf/sockets/nginx-php-fcgi", suffix, ".sock;\n")
fh:write("\t}\n")
end
Geht doch viel einfacher: den FastCGI-Workaround in die /etc/nginx/fastcgi_params mit aufnehmen.
Für uns wäre interessant ob noch jemand die Erfahrung gemacht hat, dass die PATH_INFO falsch/unbrauchbar ist. Bevor wir das "global" ändern müsste halt sichergestellt sein, dass damit keine anderen Probleme entstehen.
hatte ich als erstes getestet, über "/etc/nginx/fastcgi_params" ist $_SERVER['path_info'] leer oder nicht existent daher auch die änderung direkt am vhost
p.s. man beachte auch die änderung bei try_files
EDIT: man beachte auch das bei ocation ~ \\.php { das "$" am ende entfernt ist, das ist wichtig denn nur so habe ich das ganze überhaupt erst zum laufen gebracht, ich werde es aber später nocheinmal mit den änderungen in "fastcgi_params" testen
Mit geringfügigen Änderungen haben wir das in v2.0.1-r3985 aufgenommen. Der Abschnitt sieht dann so aus:
# PHP is enabled
index index.php index.html index.htm;
location ~ \.php(/|$) {
try_files $fastcgi_script_name =404;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include /etc/nginx/fastcgi_params;
set $path_info $fastcgi_path_info;
fastcgi_param PATH_INFO $path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_index index.php;
fastcgi_pass unix:/var/www/web1/conf/sockets/nginx-php-fcgi.sock;
}
Alles anzeigen
hört sich gut an, danke
edit: grade mal getestet, funktioniert perfekt
Kannst du mit Nginx "Schöne" URLs nutzen?
sicher, nur muss man alles direkt in den vhost schreiben (bzw. bei liveconfig in ~/conf/nginx.conf) da man nicht sowas wie .htaccess hat
Und wie machst du das ?
Ich denke das
location /
{
}
Ja bereits gesetzt ist und mit if das ein wenig buggy ist (zumindest bei xenforo).
Laut Xenforo müsste man ja
try_files $uri $uri/ /index.php?$uri&$args;
im location / BLock setzen.
da ich kein xenforo benutze kann ich dir da nicht helfen, ich kann dir aber mal die regeln geben die ich für ein wbb4 verwendet habe
ZitatAlles anzeigen
# Return static files directly if they exists
if (-f $request_filename) {
break;
}
if (-e $request_filename) {
break;
}
if ($request_uri !~ .*index\.php.*) {
rewrite ^/acp/(.*) /acp/index.php/$1 break;
rewrite ^/(.*) /index.php/$1 break;
}
sind zwar nicht die besten, aber sie funktionieren (diese sind bei mir außerhalb des location blocks definiert)
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!