Maison > Questions et réponses > le corps du texte
Énoncé du problème : nginx ne semble pas rediriger lorsque la demande d'origine concerne un emplacement inexistant. Toutes les autres redirections semblent fonctionner correctement. Il est également possible que php n'exécute pas le script sur la page redirigée. nginxconf est fourni ci-dessous.
Question : Qu'est-ce qui me manque et que dois-je faire pour que cela fonctionne ? Est-il possible que nginx ne prenne pas en charge la redirection à partir d'une page qui n'existe pas ?
Un peu de contexte peut aider : Voici une demande typique redirigée :
73.234.24.22 - - [30/May/2022:16:15:05 +0000] "GET /postevent3.asp?dta=05%2f30%2f22%2016%3a15%3a22%20507%20%2b149642656%20%2d254084882%20%2d0001787%20682829361 HTTP/1.1" 302 154 "-" "-"
Notez qu'aucune page n'est affichée pour cette requête ; la requête est vidée dans un tampon, traitée et écrite dans la base de données. Voir la fin de cet article pour un extrait du journal de débogage nginx.
Changer l'URL n'est pas pratique car il existe des dizaines d'unités dispersées dans le monde. La plupart des appareils ne peuvent pas être mis à jour à distance.
Le site d'origine n'est plus utilisé, utilisant Apache. Le site actuel utilise nginx. Je ne suis pas très familier avec les serveurs Web, donc il me manque probablement quelque chose d'évident. Toutes les idées seront appréciées.
J'ai également essayé ce qui suit dans le bloc du serveur du port 80 :
location / { try_files $uri $uri/ /data/submit_legacy.php?$query_string; }
fichier nginxconf------------------------------------------------------- - ----- --------------------
server { listen 80; listen [::]:80; root /var/www/example.org; server_name example.org www.example.org ; index index.php index.html index.htm; expires -1; rewrite_log on; error_log /var/www/example.org/data/http-org-submit.log debug; #=# ========================================================================= #=# #=# Intercept request for postevent3.asp and send it data/submit_legacy.php, #=# #=# be sure to change to return 301 when testing is complete #=# #=# ========================================================================= #=# location = /postevent3.asp { return 302 https://example.org/data/submit_legacy.php?$query_string; } location / { return 302 https://$host$request_uri; } } server { listen [::]:443 ssl http2; # managed by Certbot listen 443 ssl http2; # managed by Certbot root /var/www/example.org; server_name example.org www.example.org; index index.php index.html index.htm; expires -1; rewrite_log on; error_log /var/www/example.org/data/https-org-submit.log debug; location / { try_files $uri $uri/ /index.php$is_args$args; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.4-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } ssl_certificate /etc/letsencrypt/live/example.org/fullchain.pem; # managed by Certbot ssl_certificate_key /etc/letsencrypt/live/example.org/privkey.pem; # managed by Certbot include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot ssl_dhparam /etc/letsencrypta/ssl-dhparams.pem; # managed by Certbot add_header Strict-Transport-Security "max-age=31536000; includeSubDomains"; add_header X-Frame-Options SAMEORIGIN; add_header X-Content-Type-Options nosniff; client_max_body_size 100M; }
Extrait du fichier de débogage nginx : ---------------------------------------- - - -------------------------------------------------
2022/05/30 17:35:15 [debug] 37669#37669: *1 write new buf t:1 f:0 000055BC271BE300, pos 000055BC271BE300, size: 390 file: 0, size: 0 2022/05/30 17:35:15 [debug] 37669#37669: *1 http write filter: l:0 f:0 s:390 2022/05/30 17:35:15 [debug] 37669#37669: *1 http output filter "/postevent3.asp?dta=05%2f30%2f22%2017%3a35%3a32%20564%20%2b188886495%20%2b025481359%20%2b0005990%20570742577" 2022/05/30 17:35:15 [debug] 37669#37669: *1 http copy filter: "/postevent3.asp?dta=05%2f30%2f22%2017%3a35%3a32%20564%20%2b188886495%20%2b025481359%20%2b0005990%20570742577" 2022/05/30 17:35:15 [debug] 37669#37669: *1 image filter 2022/05/30 17:35:15 [debug] 37669#37669: *1 xslt filter body 2022/05/30 17:35:15 [debug] 37669#37669: *1 http postpone filter "/postevent3.asp?dta=05%2f30%2f22%2017%3a35%3a32%20564%20%2b188886495%20%2b025481359%20%2b0005990%20570742577" 000055BC271BE5D0 2022/05/30 17:35:15 [debug] 37669#37669: *1 write old buf t:1 f:0 000055BC271BE300, pos 000055BC271BE300, size: 390 file: 0, size: 0 2022/05/30 17:35:15 [debug] 37669#37669: *1 write new buf t:0 f:0 0000000000000000, pos 000055BC260A7AC0, size: 92 file: 0, size: 0 2022/05/30 17:35:15 [debug] 37669#37669: *1 write new buf t:0 f:0 0000000000000000, pos 000055BC260A7E20, size: 62 file: 0, size: 0 2022/05/30 17:35:15 [debug] 37669#37669: *1 http write filter: l:1 f:0 s:544 2022/05/30 17:35:15 [debug] 37669#37669: *1 http write filter limit 0 2022/05/30 17:35:15 [debug] 37669#37669: *1 writev: 544 of 544 2022/05/30 17:35:15 [debug] 37669#37669: *1 http write filter 0000000000000000 2022/05/30 17:35:15 [debug] 37669#37669: *1 http copy filter: 0 "/postevent3.asp?dta=05%2f30%2f22%2017%3a35%3a32%20564%20%2b188886495%20%2b025481359%20%2b0005990%20570742577" 2022/05/30 17:35:15 [debug] 37669#37669: *1 http finalize request: 0, "/postevent3.asp?dta=05%2f30%2f22%2017%3a35%3a32%20564%20%2b188886495%20%2b025481359%20%2b0005990%20570742577" a:1, c:1 2022/05/30 17:35:15 [debug] 37669#37669: *1 set http keepalive handler 2022/05/30 17:35:15 [debug] 37669#37669: *1 http close request 2022/05/30 17:35:15 [debug] 37669#37669: *1 http log handler 2022/05/30 17:35:15 [debug] 37669#37669: *1 free: 000055BC271E7D10, unused: 10 2022/05/30 17:35:15 [debug] 37669#37669: *1 free: 000055BC271BDE40, unused: 1875 2022/05/30 17:35:15 [debug] 37669#37669: *1 free: 000055BC2719E1B0 2022/05/30 17:35:15 [debug] 37669#37669: *1 hc free: 0000000000000000 2022/05/30 17:35:15 [debug] 37669#37669: *1 hc busy: 0000000000000000 0 2022/05/30 17:35:15 [debug] 37669#37669: *1 tcp_nodelay 2022/05/30 17:35:15 [debug] 37669#37669: *1 reusable connection: 1 2022/05/30 17:35:15 [debug] 37669#37669: *1 event timer add: 32: 65000:84579871 2022/05/30 17:35:15 [debug] 37669#37669: *1 http keepalive handler 2022/05/30 17:35:15 [debug] 37669#37669: *1 malloc: 000055BC2719E1B0:1024 2022/05/30 17:35:15 [debug] 37669#37669: *1 recv: eof:1, avail:-1 2022/05/30 17:35:15 [debug] 37669#37669: *1 recv: fd:32 0 of 1024 2022/05/30 17:35:15 [info] 37669#37669: *1 client 93.181.63.177 closed keepalive connection 2022/05/30 17:35:15 [debug] 37669#37669: *1 close http connection: 32 2022/05/30 17:35:15 [debug] 37669#37669: *1 event timer del: 32: 84579871 2022/05/30 17:35:15 [debug] 37669#37669: *1 reusable connection: 0 2022/05/30 17:35:15 [debug] 37669#37669: *1 free: 000055BC2719E1B0 2022/05/30 17:35:15 [debug] 37669#37669: *1 free: 000055BC271E7B00, unused: 136 2022/05/30 17:35:15 [debug] 37669#37669: *2 http header: "Host: www.example.org" 2022/05/30 17:35:15 [debug] 37669#37669: *2 http header done 2022/05/30 17:35:15 [debug] 37669#37669: *2 event timer del: 32: 84575067 2022/05/30 17:35:15 [debug] 37669#37669: *2 generic phase: 0 2022/05/30 17:35:15 [debug] 37669#37669: *2 rewrite phase: 1 2022/05/30 17:35:15 [debug] 37669#37669: *2 test location: "/" 2022/05/30 17:35:15 [debug] 37669#37669: *2 test location: "postevent3.asp" 2022/05/30 17:35:15 [debug] 37669#37669: *2 using configuration "=/postevent3.asp" 2022/05/30 17:35:15 [debug] 37669#37669: *2 http cl:-1 max:1048576 2022/05/30 17:35:15 [debug] 37669#37669: *2 rewrite phase: 3 2022/05/30 17:35:15 [debug] 37669#37669: *2 http set discard body 2022/05/30 17:35:15 [debug] 37669#37669: *2 http script copy: "https://example.org/data/submit_legacy.php?" 2022/05/30 17:35:15 [debug] 37669#37669: *2 http script var: "dta=10%2F14%2F02%2017%3A35%3A24%2000096%20%2B204823178%20%2B089853375%20%2B0008360%20634488566%20%0D%0A10%2F14%2F02%2017%3A35%3A27%2000096%20%2B204823175%20%2B089853369%20%2B0008402%20392294994%20%0D%0A10%2F14%2F02%2017%3A35%3A31%2000096%20%2B204823170%20%2B089853326%20%2B0008462%20215533034%20%0D%0A10%2F14%2F02%2017%3A35%3A32%2000096%20%2B204823166%20%2B089853317%20%2B0008472%20020574633%20%0D%0A" 2022/05/30 17:35:15 [debug] 37669#37669: *2 http finalize request: 302, "/postevent3.asp?dta=10%2F14%2F02%2017%3A35%3A24%2000096%20%2B204823178%20%2B089853375%20%2B0008360%20634488566%20%0D%0A10%2F14%2F02%2017%3A35%3A27%2000096%20%2B204823175%20%2B089853369%20%2B0008402%20392294994%20%0D%0A10%2F14%2F02%2017%3A35%3A31%2000096%20%2B204823170%20%2B089853326%20%2B0008462%20215533034%20%0D%0A10%2F14%2F02%2017%3A35%3A32%2000096%20%2B204823166%20%2B089853317%20%2B0008472%20020574633%20%0D%0A" a:1, c:1 2022/05/30 17:35:15 [debug] 37669#37669: *2 http special response: 302, "/postevent3.asp?dta=10%2F14%2F02%2017%3A35%3A24%2000096%20%2B204823178%20%2B089853375%20%2B0008360%20634488566%20%0D%0A10%2F14%2F02%2017%3A35%3A27%2000096%20%2B204823175%20%2B089853369%20%2B0008402%20392294994%20%0D%0A10%2F14%2F02%2017%3A35%3A31%2000096%20%2B204823170%20%2B089853326%20%2B0008462%20215533034%20%0D%0A10%2F14%2F02%2017%3A35%3A32%2000096%20%2B204823166%20%2B089853317%20%2B0008472%20020574633%20%0D%0A" 2022/05/30 17:35:15 [debug] 37669#37669: *2 http set discard body 2022/05/30 17:35:15 [debug] 37669#37669: *2 xslt filter header 2022/05/30 17:35:15 [debug] 37669#37669: *2 HTTP/1.1 302 Moved Temporarily Server: nginx/1.18.0 (Ubuntu) Date: Mon, 30 May 2022 17:35:15 GMT Content-Type: text/html Content-Length: 154 Connection: keep-alive Location: https://example.org/data/submit_legacy.php?dta=10%2F14%2F02%2017%3A35%3A24%2000096%20%2B204823178%20%2B089853375%20%2B0008360%20634488566%20%0D%0A10%2F14%2F02%2017%3A35%3A27%2000096%20%2B204823175%20%2B089853369%20%2B0008402%20392294994%20%0D%0A10%2F14%2F02%2017%3A35%3A31%2000096%20%2B204823170%20%2B089853326%20%2B0008462%20215533034%20%0D%0A10%2F14%2F02%2017%3A35%3A32%2000096%20%2B204823166%20%2B089853317%20%2B0008472%20020574633%20%0D%0A Expires: Mon, 30 May 2022 17:35:14 GMT Cache-Control: no-cache
P粉7153042392024-03-28 10:47:44
Si je suppose que le logiciel effectuant cette demande ne peut pas interpréter le code de redirection HTTP 302 et faire une nouvelle demande est correct, alors votre seul recours est de gérer la demande dans le bloc HTTP lui-même. au lieu de votre actuel
location = /postevent3.asp { return 302 https://example.org/data/submit_legacy.php?$query_string; }
Vous pouvez vérifier cette configuration :
location = /postevent3.asp { rewrite ^ /data/submit_legacy.php break; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$uri; fastcgi_pass unix:/run/php/php7.4-fpm.sock; }
Si vous utilisez cette configuration, vos demandes commenceront à apparaître dans la base de données, ce qui signifie certainement que ma supposition initiale était correcte.