2011-09-23 14 views
13

के लिए हमेशा एक कस्टम 404 वापस करने के लिए nginx कैसे प्राप्त करें I nginx 0.8.53 कुछ वर्चुअल होस्ट्स के साथ स्थापित है जो मैं चाहता हूं। हालांकि वर्चुअल होस्ट्स पर nginx के 'सर्वश्रेष्ठ मिलान' के कारण मुझे एक विशिष्ट वर्चुअल होस्ट के लिए सभी अनुरोधों को पकड़ने के लिए एक डिफ़ॉल्ट होस्ट जोड़ने की आवश्यकता है। मैं डिफ़ॉल्ट होस्ट को 404 पेज वापस करने के लिए चाहता हूं जो यह नहीं बताता कि मैं nginx 0.8.53 चला रहा हूं।डिफ़ॉल्ट होस्ट

मैं की तरह यह कुछ होना चाहिए ग्रहण:

# The default server. 
# 
server { 
    listen  80 default_server; 
    server_name everythingelse; 

    # Everything is a 404 
    location/{ 
     return 404; 
    } 
    error_page 404 /opt/local/html/404.html; 
} 

लेकिन यह अभी भी रिटर्न डिफ़ॉल्ट nginx 404 पृष्ठ है कि संस्करण संख्या .. ऐसा लगता है 'लौट 404' 'error_page' config पर ध्यान नहीं देता ..

उत्तर

2

इससे पहले कि आप वापसी 404.

फोन conf अप error_page निर्देश ले जाएँ यह काम करना चाहिए:

# The default server. 
# 
server { 
    listen  80 default_server; 
    server_name everythingelse; 
    error_page 404 /error_docs/404.html; 

    # Everything is a 404 
    location/{ 
     return 404; 
    } 

    # Custom Error Page 
    location /error_docs { 
     alias /opt/local/html/; 
     log_not_found off; 
     access_log off; 
    } 
} 

यह सभी साइटों (सर्वर) के लिए एक ही कस्टम एक का उपयोग करेगा। आपको त्रुटि दस्तावेज़ स्थान जोड़ने की आवश्यकता है।

http { 
error_page 404 /error_docs/404.html; 

... 

    # The default server. 
    # 
    server { 
     listen  80 default_server; 
     server_name everythingelse; 

     # Everything is a 404 
     location/{ 
      return 404; 
     } 

     # Custom Error Page 
     location /error_docs { 
      alias /opt/local/html/; 
      log_not_found off; 
      access_log off; 
     } 
    } 
} 
3

nginx में बहुत कम निर्देश एक फाइल सिस्टम पथ लेते हैं।

# The default server. 
server { 
    listen  80 default_server; 
    server_name everythingelse; 

    root /opt/local/html; 

    error_page 404 /404.html; 

    # Everything is a 404 
    location/{ 
    return 404; 
    } 

    # EDIT: You may need this to prevent return 404; recursion 
    location = /404.html { 
    internal; 
    } 
} 
+0

आपका कोड उसे डिफ़ॉल्ट 404 पृष्ठ है जो वह कहता है कि वह नहीं चाहता है दे देंगे (और पहले से ही वैसे भी हो जाता है) और दूसरी (Debian9 और nginx/1.10.3 का उपयोग करते हुए) , error_page निर्देश आपको कस्टम त्रुटि पृष्ठ निर्दिष्ट करने की अनुमति देता है। वास्तव में, "त्रुटि_पृष्ठ 404/404।एचटीएमएल "का मतलब है nginx स्थापना फ़ोल्डर में 404.html फ़ाइल (डिफ़ॉल्ट 404 फ़ाइल) का उपयोग करें। यह" error_page 404 /path/to/any/other/404.html "भी हो सकता है, वैकल्पिक रूप से, वह डिफ़ॉल्ट फ़ाइल बदल सकता है खुद। – Dayo

+1

डिफ़ॉल्ट 404 पृष्ठ एक फ़ाइल नहीं है, और त्रुटि_पृष्ठ * फाइल सिस्टम पथ नहीं लेता है। यह आंतरिक रूप से दिए गए यूरी पर रीडायरेक्ट करता है, इसलिए यह /404.html की तलाश में जा सकता है। इसे जोड़ने की आवश्यकता हो सकती है स्थान = /404.html {आंतरिक;} या डिफॉल्ट 404 पेज को प्रदर्शित करने से रोकने के लिए, अब मैं इसके बारे में सोचता हूं, क्योंकि आंतरिक रीडायरेक्ट स्थान पर वापस आ जाएगा/और मुझे यकीन नहीं है कि वापसी 404 क्या है ; recursive_error_pages पर बिना किया जाएगा; (जो वैसे भी खराब होगा) – kolbyjack

+0

"डिफ़ॉल्ट 404 पृष्ठ बिल्कुल एक फ़ाइल नहीं है" गलत है। आप इसे/usr/share/nginx/html/फ़ोल्डर में ढूंढ सकते हैं (रेडहाट पर - दूसरों के लिए अलग हो सकता है)। त्रुटि_पृष्ठ निर्देश एक यूरी लेता है जो वेबूट या एलियाड के तहत हो सकता है जरूरत है। – Dayo

22

यहाँ क्या मैं अपने conf में है यह काम करने के लिए: तुम कुछ की तरह चाहते हैं

# The default server. 
server { 
    listen  80 default_server; 
    server_name everythingelse; 

    error_page 404 /404.html; 

    # Everything is a 404 
    location/{ 
    return 404; #return the code 404 
    } 

    # link the code to the file 
    location = /404.html { 
    #EDIT this line to make it match the folder where there is your errors page 
    #Dont forget to create 404.html in this folder 
    root /var/www/nginx/errors/; 
    } 
} 
संबंधित मुद्दे