सवाल यह nginx त्रुटि "पुनर्लेखन या आंतरिक पुनर्निर्देशन चक्र" का क्या अर्थ है?


tail -f /var/log/nginx/error.log
2013/05/04 23:43:35 [error] 733#0: *3662 rewrite or internal redirection cycle while internally redirecting to "/index.html", client: 127.0.0.1, server: _, request: "GET /robots.txt HTTP/1.1", host: "kowol.mysite.net"
HTTP/1.1", host: "www.joesfitness.net"
2013/05/05 00:49:14 [error] 733#0: *3783 rewrite or internal redirection cycle while internally redirecting to "/index.html", client: 127.0.0.1, server: _, request: "GET / http://www.qq.com/ HTTP/1.1", host: "www.qq.com"
2013/05/05 03:12:33 [error] 733#0: *4232 rewrite or internal redirection cycle while internally redirecting to "/index.html", client: 127.0.0.1, server: _, request: "GET / HTTP/1.1", host: "joesfitness.net"

मैं इन्हें nginx त्रुटि लॉग से प्राप्त कर रहा हूं, मेरे पास "kowol" उप डोमेन नहीं है, मेरे पास मेरी साइट पर qq.com या joesfitness.net का कोई लिंक नहीं है। क्या चल रहा है?

संपादित करें: Nginx डिफ़ॉल्ट कॉन्फ़िगरेशन:

server {
    listen   8080; ## listen for ipv4; this line is default and implied
    listen   [::]:8080 default ipv6only=on; ## listen for ipv6

    root /usr/share/nginx/www;
    index index.php index.html index.htm;

    # Make site accessible from http://localhost/
    server_name _;

    location / {
        # First attempt to serve request as file, then
        # as directory, then fall back to index.html
        try_files $uri $uri/ /index.html;
        # Uncomment to enable naxsi on this location
        # include /etc/nginx/naxsi.rules
    }

    location /doc/ {
        alias /usr/share/doc/;
        autoindex on;
        allow 127.0.0.1;
        deny all;
    }

    # Only for nginx-naxsi : process denied requests
    #location /RequestDenied {
        # For example, return an error code
        #return 418;
    #}

    #error_page 404 /404.html;

    # redirect server error pages to the static page /50x.html
    #
    #error_page 500 502 503 504 /50x.html;
    #location = /50x.html {
    #   root /usr/share/nginx/www;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini

        # With php5-cgi alone:
        fastcgi_pass 127.0.0.1:9000;
        #With php5-fpm:
        #fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
    }

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #   deny all;
    #}
}

51
2018-05-05 05:06


मूल




जवाब:


यह एक अजीब बात है, हालांकि मैं इस शर्त पर शर्त लगाने जा रहा हूं:

        try_files $uri $uri/ /index.html;

यहां समस्या यह है कि यहां दूसरा पैरामीटर है, $uri/, आपके प्रत्येक फाइल का कारण बनता है index बारी में कोशिश करने के लिए निर्देश। यदि कोई नहीं मिला है, तो यह आगे बढ़ता है /index.html, जो वही कारण बनता है location ब्लॉक को फिर से दर्ज किया जाना चाहिए, और चूंकि यह अभी भी मौजूद नहीं है, इसलिए आपको अंतहीन पाश मिलता है।

मैं इसे इस प्रकार लिखूंगा:

        try_files $uri $uri/ =404;

अगर आपने इंडेक्स फाइलों में से कोई भी निर्दिष्ट नहीं किया है तो 404 त्रुटि वापस करने के लिए index निर्देश मौजूद है।


बीटीडब्ल्यू, आप जो अनुरोध देख रहे हैं वे हैं इंटरनेट पृष्ठभूमि शोर। विशेष रूप से, वे यह निर्धारित करने के लिए जांच कर रहे हैं कि आपका वेब सर्वर एक खुली प्रॉक्सी है या दुर्भावनापूर्ण गतिविधि करने के लिए दुर्भावनापूर्ण उपयोगकर्ता की उत्पत्ति को छिपाने के लिए दुर्व्यवहार किया जा सकता है। आपका कॉन्फ़िगरेशन में आपका सर्वर एक खुली प्रॉक्सी नहीं है, इसलिए आपको इसके बारे में चिंता करने की ज़रूरत नहीं है।


62
2018-05-05 05:25



स्पष्टीकरण के लिए धन्यवाद। क्या कोई इस तरह की जांच को अवरुद्ध / प्रतिबंधित कर सकता है? - pavs-maha
वास्तव में, बस उन्हें एक अच्छा 404 खिलाओ और वे अंततः इसे समझ लेंगे। - Michael Hampton♦
"मजाकिया" क्या है कि उबंटू 13.10 पर डिफ़ॉल्ट कॉन्फ़िगरेशन है try_files $uri $uri/ /index.html; तथा index index.php index.html index.htm; सेट। परिणामस्वरूप त्रुटि में त्रुटि हुई। ऐसा नहीं है 12.04 और 14.04 के लिए, सर्वर पर होने की संभावना कम है। - leifcr


यह कष्टप्रद था। यह कुछ हफ्ते पहले काम कर रहा था, और जब मैंने आज कोशिश की तो यह मुझ पर असफल रहा।

मुझे उबंटू का अपग्रेड माना जाता था nginx पैकेज की डिफ़ॉल्ट निर्देशिका का कारण बनता है जहां उबंटू ने मानक इंडेक्स फाइलों को बदल दिया, इसलिए लाइन:

root /usr/share/nginx/www;

फाइलों का स्थान अब के रूप में काम नहीं करेगा /usr/share/nginx/html

ठीक करने के लिए, कोई रूट पॉइंटर को सही निर्देशिका में बदल सकता है, या नई निर्देशिका में सिम्लिंक बना सकता है:

cd /usr/share/nginx
sudo ln -s html www

मेरे लिये कार्य करता है।


6
2018-03-27 10:10





यदि आपको यह त्रुटि संदेश भी मिलेगा index.php पूरी तरह गायब है।


5
2018-01-06 12:58



हां, मेरे मामले में मैंने रूट पैरामीटर पर पथ डालने में गलती की। - dlopezgonzalez


मैं कल इस समस्या में भाग गया क्योंकि मैं प्रॉक्सी सर्वर पर nginx का परीक्षण कर रहा था जिसने एक रीडायरेक्ट कैश किया था जो अब अस्तित्व में नहीं था। मेरे लिए समाधान था $ sudo service squid3 restart squid3 प्रॉक्सी सर्वर पर मैं कनेक्ट कर रहा था।


2
2017-11-26 22:46



नोटिस मैंने इस जवाब को अच्छे इरादे से साझा किया। इस त्रुटि के कई कारण हैं और प्रॉक्सी कैशिंग को समझने में कुछ समय लगता है। - Ninjaxor


आज यह त्रुटि थी, कारण को समझने में कुछ घंटे बिताएं। किसी ने सभी साइट की फ़ाइलों को हटा दिया।


0
2017-07-17 20:23