Nous avons des caches de page avec un partitionnement et un sous-domaine id. Dites pour les demandes comme ny.site.com/cat/12345
ou la.site.com/dog/234
, nginx doit
/cat/ny/1234/5.html
existe, renvoyez-le request_uri
pour request_uri
au serveur d’applications et le fichier cache sera créé Nous avons réussi à comprendre la partie partitionnement de sous-domaines et d’ID, mais nous n’avons pas eu de chance sur la partie try_files. Toujours obtenir des erreurs de boucle indéfinies comme la rewrite or internal redirection cycle while internally redirecting to
notre fichier nginx.conf est comme
rewrite "/cat/([0-9]{4})([0-9]{1,4})" /system/cache/cat/$subdomain/$1/$2.html break; rewrite "/cat/([0-9]{1,4})" /system/cache/cat/$subdomain/$1.html break; try_files $uri $request_uri;
Des indices? Merci!
MISE À JOUR: J’ai essayé ce qui suit. Nginx cherchait $ request_uri (par exemple, / cat / 12345) dans le système de fichiers au lieu de toucher le serveur d’applications. Des pensées?
try_files $uri @old; location @old { rewrite ^ $request_uri break; }
Essayez avec ceci
location ^~ ^/cat/([0-9]{4})([0-9]{1,4}) { try_files "/cat/ny/$1/$2.html" @app_server; } location @app_server{ # pass this to your app server for processing. }
Je n’ai jamais essayé ça moi-même avant mais c’est comme ça que je l’écrirais
location / { # or whatever location you see fit to your requirements try_files $uri.html $uri; # I don't know if the `.` needs to be escaped `$uri\.html`, you can try both }