nginx umschreiben von riskanten if-Anweisungen zu try_files. Kann jemand helfen, zu konvertieren? (kurz)

3281
user3125310

Ich versuche, meine Nginx-Neuschreibungsregeln für mein vBulletin-Forum zu bereinigen, die einige Änderungen und zusätzliche Software auf derselben Website enthält, die Probleme verursacht. Ich habe Dinge, die so funktionieren, wie sie sollten, aber laut Nginx, wenn es böse ist, bin ich besorgt und möchte versuchen, diese wenigen Regeln in try_files zu konvertieren.

Derzeit gibt es

  1. Eine Regel für statische Bilder und Dateien, damit sie nicht an den SEO-Mod übergeben werden (z. B. .gif, .ico, sogar .css).

  2. Eine Regel für das Unterordner Mobiquo, das auch als Tapatalk-Plugin bezeichnet wird. Damit dies funktioniert, musste ich das gesamte Verzeichnis von Umschreibungen ausschließen.

  3. Wenn die Datei nicht existiert Ich bin mir nicht sicher, wie wichtig das ist, aber es scheint eine gute Idee zu sein. Vielleicht ist es die Arbeit des SEO Mod.

Die Nginx-Umschreibregeln in der anscheinend riskanten If-Blockform:

Dies ist über dem / forum / -Block, weil ich ihm Priorität einräumen wollte. Wenn dies nicht ordnungsgemäß geschieht, würde ich das gerne wissen.

 location ~* \.(?:ico|css|js|gif|jpe?g|png)$ { # Some basic cache-control for static files to be sent to the browser expires max; add_header Pragma public; add_header Cache-Control "public, must-revalidate, proxy-revalidate"; }  location /forum/ {  try_files $uri $uri/ /forum/dbseo.php?$args;  if ($request_uri ~* ^/forum/mobiquo) { break; }  if (-f $request_filename) { expires 30d; break; }  if ($request_filename ~ "\.php$" ) { rewrite ^(/forum/.*)$ /forum/dbseo.php last; }   if (!-e $request_filename) { rewrite ^/forum/(.*)$ /forum/dbseo.php last; }  } 

ENDE

Irgendwo in meinen Suchen habe ich eine Vorlage gefunden, die ich anpassen wollte, aber da ich Regex nicht verstehe, habe ich versagt :)

Standort / {

 # if you're just using wordpress and don't want extra rewrites # then replace the word @rewrites with /index.php 

try_files $ uri $ uri / /index.php;

}

location @rewrites {

 # Can put some of your own rewrite rules in here # for example rewrite ^/~(.*)/(.*)/? /users/$1/$2 last; # If nothing matches we'll just send it to /index.php 

try_files $ uri $ uri / /forum/dbseo.php?$args;

umschreiben ^ /index.php last;

umschreiben ^ (/. php) $ /forum/dbseo.php last;

}

0
Ich vermute, dein Problem mit dem Mod dbseo ist nicht der Block selbst !! Digital site vor 9 Jahren 0

1 Antwort auf die Frage

0
Bernard Rosset

Versuchen Sie, Ihre Frage zu bereinigen, vor allem am Ende, wenn Sie statt Code schreiben.

Basierend auf der Konfiguration, die Sie oben in Ihrer Frage angegeben haben, endete ich damit:

location /forum/ { index dbseo.php; # You obviously wish to send everything erroneous/inexistent to dbseo.php, any index.php file would suffer the regex location below try_files $uri $uri/ /forum/dbseo.php?$args; # Any inexistent file/directory will be handled over to /forum/dbseo.php  location ^~ /forum/dbseo.php { # Avoids matching the regex location below (performance) }  location ^~ /forum/mobiquo { # Avoids matching any other rules }  location ~* \.php$ { try_files /forum/dbseo.php =404; # Be careful here, try to secure your location since the regex can still be manipulated for arbitrary code execution } } 

Verschachtelte Standorte sind für die Isolierung potenziell widersprüchlicher Standortblöcke eine gute Sache. Denken Sie daran, dass die regulären Ausdrücke nacheinander ausgewertet werden. Um zu verhindern, dass die Reihenfolge der Positionsblöcke eine Auswirkung hat (was genau wie bei der Apache-Konfiguration ein Chaos ist), sollten Sie Regex-Positionen immer in Präfixpositionen einschließen, um zu vermeiden, dass mehrere aufeinander folgen.

Sie können locationModifikatoren auf der Dokumentationsseite lernen .

Vielleicht gibt es mehr Untertitel, aber Sie haben alle grundlegenden Informationen, die Sie in meinem Beispiel benötigen. Es liegt an Ihnen, es zu verstehen und zu verbessern, um Ihren Bedürfnissen besser gerecht zu werden. :O)