nginx เขียนซ้ำหรือเปลี่ยนเส้นทางภายใน


13

ฉันต่อสู้กับหัวของฉันกับตารางพยายามที่จะคิดออกว่าอะไรเป็นสาเหตุของวงจรการเปลี่ยนเส้นทางในการกำหนดค่า nginx ของฉันเมื่อพยายามเข้าถึง URL ที่ไม่มีอยู่การกำหนดค่าไปดังนี้:

server {
        listen       127.0.0.1:8080;
        server_name  .somedomain.com;
    root  /var/www/somedomain.com;

        access_log /var/log/nginx/somedomain.com-access.nginx.log;
    error_log  /var/log/nginx/somedomain.com-error.nginx.log debug;

        location ~* \.php.$ {
        # Proxy all requests with an URI ending with .php*
        # (includes PHP, PHP3, PHP4, PHP5...)
        include /etc/nginx/fastcgi.conf;
        }

        # all other files
        location / {
            root  /var/www/somedomain.com;
        try_files $uri $uri/ ;
        }

    error_page 404 /errors/404.html;
        location /errors/ {
                alias /var/www/errors/;
        }       

        #this loads custom logging configuration which disables favicon error logging
        include /etc/nginx/drop.conf;
}

โดเมนนี้เป็นไซต์ STATIC HTML ที่เรียบง่ายเพียงเพื่อจุดประสงค์ในการทดสอบ ฉันคาดหวังว่าคำสั่ง error_page จะตอบสนองต่อ PHP-FPM ไม่สามารถค้นหาไฟล์ที่กำหนดเนื่องจากฉันมี fastcgi_intercept_errors อยู่ ใน http block และไม่มี error_page ตั้งค่า แต่ฉันเดาว่าคำขอล้มเหลวก่อนหน้านั้นบางแห่งในการเปลี่ยนเส้นทางภายใน ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชมมาก


เบราว์เซอร์ไคลเอ็นต์รายงานการวนรอบการเปลี่ยนเส้นทางหรือ nginx หรือไม่ หากเป็นลูกค้าจะเปลี่ยนเส้นทางไปยังที่ใด
เชนแมดเดน

ทั้งสองรายงานว่า ในที่สุดลูกค้าก็ลงท้ายด้วย URL ของ /errors//errors//errors//errors//errors/...404.html
milosgajdos

รายการบันทึกจาก nginx มีลักษณะอย่างไร
เชนแมดเดน

คำตอบ:


11

ผู้ร้ายคือ: try_files $uri $uri/ ;

http://nginx.org/r/try_files (โปรดทราบว่าพารามิเตอร์สุดท้ายคือโค้ดส่งคืนหรือ URI เพื่อเปลี่ยนเส้นทางภายใน)

หากไม่พบไฟล์ใด ๆ จะทำการเปลี่ยนเส้นทางภายในไปยัง uri ที่ระบุโดยพารามิเตอร์ล่าสุด


ขอบคุณ เพิ่งมีข้อผิดพลาดอย่างใดอย่างหนึ่งกับการตั้งค่า Roots Trellis LEMP เกิดขึ้นหลังจากการนำเข้าข้อมูล WooCommerce ไม่เคยมีมาก่อน คุณจะแนะนำอะไรในกรณีเหล่านี้ ลบพารามิเตอร์$uri/หรือไม่ ดูพารามิเตอร์ที่นี่: github.com/roots/trellis/blob/…
rhand

2

ดังที่คนอื่น ๆ ได้กล่าวมานี่คือผู้ร้าย:

    try_files $uri $uri/ ;

มันสร้างการวนรอบการเปลี่ยนเส้นทางเนื่องจากพารามิเตอร์สุดท้ายของtry_filesควรชี้ไปที่ตำแหน่งหากไม่พบไฟล์ ฉันแก้ไขได้โดยเพิ่ม a =404ดังนี้:

    try_files $uri $uri/ =404 ;
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.