問題陳述:當原始請求是不存在的位置時,nginx 似乎不會重定向。所有其他重定向似乎都工作正常。也有可能 php 沒有在重定向頁面上執行腳本。下面提供了 nginxconf。
問題:我缺少什麼以及我需要做什麼才能完成這項工作? nginx 是否可能不支援從不存在的頁面進行重新導向?
一些上下文可能會有所幫助:這是一個正在重定向的典型請求:
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 "-" "-"
請注意,沒有針對此要求的頁面顯示;該請求被轉儲到緩衝區中,進行處理並寫入資料庫。請參閱本文末尾以獲取 nginx 調試日誌的摘錄。
更改 URL 是不切實際的,因為有數十個單位分散在世界各地。大多數設備無法遠端更新。
原來的網站現在不再使用,使用的是apache。目前站點使用nginx。我不太熟悉網頁伺服器,所以我可能錯過了一些明顯的東西。所有想法都將受到讚賞。
我還在連接埠 80 伺服器區塊中嘗試了以下操作:
location / { try_files $uri $uri/ /data/submit_legacy.php?$query_string; }
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; }
從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
如果我對發起此請求的軟體無法解釋 302 HTTP 重定向程式碼並發出新請求的猜測是正確的,那麼您唯一的方法就是在 HTTP 區塊本身內處理該請求。而不是您當前的
location = /postevent3.asp { return 302 https://example.org/data/submit_legacy.php?$query_string; }
您可以檢查此配置:
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; }
如果使用此配置,您的請求將開始出現在資料庫中,這肯定意味著我最初的猜測是正確的。