HTTP एरर कोड का मतलब: 403, 404, 503 और 504 क्या हैं
वेबसाइट पर 403, 404, 503 या 504 दिखा? जानिए हर HTTP एरर कोड का मतलब, गलती आपकी है या सर्वर की, और बार बार रिफ्रेश दबाने से पहले आप असल में क्या कर सकते हैं।
HTTP एरर कोड का मतलब: पहला अंक सब बता देता है
HTTP एरर कोड तीन अंकों की वह संख्या है जो सर्वर हर जवाब के साथ भेजता है, और उसका पहला अंक बता देता है कि गड़बड़ी किस तरफ़ है। 4 से शुरू होने वाला कोड (जैसे 403 या 404) बताता है कि सर्वर ने आपकी रिक्वेस्ट ठुकरा दी या उसे गलत माना। 5 से शुरू होने वाला कोड (जैसे 503 या 504) बताता है कि सर्वर खुद नाकाम रहा, और उसे ठीक करना वेबसाइट चलाने वालों का काम है।
HTTP (हाइपरटेक्स्ट ट्रांसफर प्रोटोकॉल) वह नियम है जिससे आपका ब्राउज़र किसी वेबसाइट से पेज माँगता है। हर माँग को रिक्वेस्ट कहते हैं, और सर्वर का हर जवाब एक स्टेटस कोड से शुरू होता है।
स्टेटस कोड चार बड़े समूहों में बँटे हैं:
- 2xx: सब ठीक है। 200 का मतलब है कि पेज मिल गया। यह कोड आपको कभी दिखता नहीं, क्योंकि ब्राउज़र सीधे पेज दिखा देता है।
- 3xx: पेज कहीं और है। इसे रीडायरेक्ट कहते हैं। ब्राउज़र अपने आप नए पते पर चला जाता है, जैसे सर्वर पर HTTP से HTTPS पर रीडायरेक्ट में होता है।
- 4xx: रिक्वेस्ट ठुकराई गई या गलत थी। सर्वर चल रहा है, पर उसने आपकी रिक्वेस्ट पूरी नहीं की।
- 5xx: सर्वर फ़ेल हुआ। रिक्वेस्ट ठीक थी, पर सर्वर जवाब नहीं बना पाया।
एक बात ध्यान रखें। 4xx का मतलब यह नहीं कि आपने कुछ गलत किया। 4xx सिर्फ़ इतना बताता है कि सर्वर ने आपकी रिक्वेस्ट को समस्या माना। 403 और 429 अक्सर साइट के अपने सुरक्षा नियमों से आते हैं, इसलिए आपकी कोई गलती न होने पर भी ये दिख सकते हैं।
अपनी साइट का स्टेटस कोड खुद कैसे देखें
किसी भी पेज का कोड ब्राउज़र में दिख जाता है। F12 दबाएँ, Network टैब खोलें, और पेज दोबारा लोड करें। हर लाइन के आगे Status कॉलम में कोड लिखा होता है।
अगर आपकी अपनी वेबसाइट है, तो टर्मिनल से curl यही काम करता है। -I फ़्लैग सिर्फ़ जवाब के हेडर माँगता है, पूरा पेज नहीं:
curl -I https://your-site.exampleजवाब की पहली लाइन को स्टेटस लाइन कहते हैं। उसका ढाँचा कुछ ऐसा होता है:
HTTP/2 404
server: nginx
content-type: text/htmlHTTP/2 प्रोटोकॉल का संस्करण है, और उसके बाद वाली संख्या स्टेटस कोड है। कोई सर्वर पुराने संस्करण पर बात करे तो वहाँ HTTP/1.1 404 Not Found जैसी लाइन दिखती है। HTTP के अलग अलग संस्करणों का फ़र्क एक अलग विषय है, पर कोड का मतलब हर संस्करण में एक ही रहता है।
कुछ सर्वर -I वाली HEAD रिक्वेस्ट का जवाब आम GET रिक्वेस्ट से अलग देते हैं। अगर नतीजा अजीब लगे, तो असली GET भेजकर सिर्फ़ कोड छापें:
curl -sS -o /dev/null -w '%{http_code}\n' https://your-site.exampleयह कमांड पेज को फेंक देती है और सिर्फ़ 200 या 404 जैसी एक संख्या छापती है।
टाइमआउट और 504 में फ़र्क: जवाब किसने दिया?
ये दोनों एक जैसे लगते हैं, पर इनका मतलब अलग है। फ़र्क एक सवाल से समझ आता है: क्या किसी ने जवाब दिया?
कनेक्शन टाइमआउट में किसी ने जवाब नहीं दिया। ब्राउज़र ने इंतज़ार किया, और समय सीमा तक कुछ नहीं आया। इसलिए यहाँ कोई HTTP कोड होता ही नहीं, क्योंकि कोड तो सर्वर भेजता है। Chrome इसे ERR_CONNECTION_TIMED_OUT के साथ दिखाता है, और Firefox "The connection has timed out" लिखता है। किसी मोबाइल ऐप में "server connection timed out" जैसा संदेश भी यही बताता है: ऐप ने सर्वर से जुड़ने की कोशिश की, और कोई जवाब नहीं लौटा।
टाइमआउट के कई कारण हो सकते हैं। सर्वर इतना व्यस्त हो सकता है कि नए कनेक्शन ही न ले। बीच का नेटवर्क पैकेट गिरा सकता है। आपका अपना इंटरनेट भी रुका हो सकता है। सबसे पहले कोई दूसरी जानी-पहचानी साइट खोलें। वह खुल जाए, तो आपका इंटरनेट ठीक है।
504 में किसी ने जवाब दिया। ज़्यादातर बड़ी वेबसाइटों के आगे एक proxy सर्वर होता है। यह एक बीच का सर्वर है जो आपकी रिक्वेस्ट लेता है और पीछे वाले ऐप सर्वर तक पहुँचाता है। इसे reverse proxy या CDN (कंटेंट डिलीवरी नेटवर्क) कहा जाता है। 504 का मतलब है कि proxy तक आपकी रिक्वेस्ट पहुँच गई, proxy ने उसे आगे भेजा, और पीछे वाला सर्वर तय समय में जवाब नहीं दे पाया। तब proxy खुद "504 Gateway Time-out" वाला पेज भेज देता है।
आपके लिए नतीजा लगभग एक जैसा है: दोनों में गलती आम तौर पर आपकी नहीं होती। पर 504 यह पक्का कर देता है कि आपका इंटरनेट और साइट का पता दोनों ठीक हैं, क्योंकि proxy ने जवाब दिया।
हर HTTP एरर कोड: 400 से 504 तक
हर कोड के लिए तीन बातें: उसका मतलब, गलती आम तौर पर किस तरफ़ होती है, और आप असल में क्या कर सकते हैं।
400 Bad Request
- मतलब: सर्वर आपकी रिक्वेस्ट समझ नहीं पाया, क्योंकि उसका ढाँचा गलत था।
- किसकी तरफ़: आम तौर पर ब्राउज़र की तरफ़। अक्सर कारण एक टूटा हुआ URL या खराब और बहुत बड़ी cookie होती है। nginx वाली साइट पर यह कभी कभी "Request Header Or Cookie Too Large" के साथ आता है।
- आप क्या करें: URL दोबारा जाँचें। उस साइट की cookies मिटाएँ, या पेज को Incognito या Private विंडो में खोलें।
401 Unauthorized
- मतलब: इस पेज के लिए लॉगिन चाहिए, और सर्वर आपकी पहचान नहीं कर पाया। नाम में "Unauthorized" है, पर असली मतलब है "पहचान नहीं हुई"।
- किसकी तरफ़: आपकी तरफ़, पर इसमें कोई गलती नहीं। ज़्यादातर बार आपका लॉगिन सेशन ख़त्म हो गया होता है।
- आप क्या करें: दोबारा लॉगिन करें। सही पासवर्ड के बाद भी 401 आए, तो लॉगआउट करें, cookies मिटाएँ और फिर लॉगिन करें।
403 Forbidden
- मतलब: सर्वर ने रिक्वेस्ट समझी, पर देने से मना कर दिया। 401 से फ़र्क यह है कि यहाँ लॉगिन करने से अक्सर कुछ नहीं बदलता।
- किसकी तरफ़: फ़ैसला साइट के नियमों का है। पर उसे चालू करने वाली चीज़ आपकी तरफ़ हो सकती है, जैसे आपका IP पता या चालू VPN।
- आप क्या करें: VPN या proxy चालू हो तो बंद करके देखें। Wi-Fi की जगह मोबाइल डेटा से खोलें, ताकि आपका IP बदल जाए। फिर भी 403 आए, तो वह पेज आपके लिए बंद है, और साइट के हेल्पडेस्क से बात करना ही रास्ता है।
404 Not Found
- मतलब: सर्वर चल रहा है, पर इस पते पर कोई पेज नहीं है।
- किसकी तरफ़: अक्सर पुराना लिंक या URL में टाइपिंग की गलती। कभी साइट ने पेज हटा दिया होता है या उसका पता बदल दिया होता है। जो पेज अभी प्रकाशित ही नहीं हुआ, उसका लिंक भी 404 देता है।
- आप क्या करें: URL अक्षर से अक्षर मिलाएँ। किसी पुराने मैसेज वाले लिंक के बजाय साइट के होमपेज से वही पेज ढूँढें।
429 Too Many Requests
- मतलब: आपने कम समय में बहुत ज़्यादा रिक्वेस्ट भेजीं, इसलिए सर्वर ने आपको कुछ देर के लिए रोक दिया। इसे rate limit कहते हैं।
- किसकी तरफ़: सीमा साइट तय करती है, और उसे पार आपकी रिक्वेस्ट करती हैं। ध्यान रहे कि कई लोग एक ही IP के पीछे हो सकते हैं, जैसे एक ऑफ़िस या साइबर कैफ़े। कई मोबाइल नेटवर्क भी एक सार्वजनिक IP बहुत से ग्राहकों में बाँटते हैं। तब दूसरों की रिक्वेस्ट भी उसी गिनती में जुड़ती हैं।
- आप क्या करें: रुकें। हर रिफ्रेश गिनती बढ़ाता है, इसलिए बार बार दबाने से रोक और लंबी हो सकती है। कई सर्वर जवाब में
Retry-Afterहेडर भेजते हैं, जो बताता है कि कितने सेकंड बाद दोबारा कोशिश करनी है।
500 Internal Server Error
- मतलब: सर्वर पर चल रहे प्रोग्राम में कोई गड़बड़ी हुई, और सर्वर के पास इससे ज़्यादा बताने को कुछ नहीं है।
- किसकी तरफ़: पूरी तरह साइट की।
- आप क्या करें: कुछ मिनट बाद दोबारा कोशिश करें। अगर यह फ़ॉर्म या फ़ीस भरते समय आया, तो दोबारा भेजने से पहले देखें कि पहली बार वाला जमा तो नहीं हो गया। SMS या बैंक का मैसेज जाँचें, ताकि दो बार भुगतान न हो।
502 Bad Gateway
- मतलब: बीच वाले proxy ने पीछे के सर्वर से जवाब माँगा, और या तो कनेक्शन ही नहीं बना या जवाब टूटा हुआ आया।
- किसकी तरफ़: साइट की।
- आप क्या करें: एक दो मिनट रुककर दोबारा खोलें। यह कोड अक्सर तब दिखता है जब पीछे वाला ऐप रीस्टार्ट हो रहा हो या नया वर्ज़न लगाया जा रहा हो, और ऐसे में यह जल्दी ठीक हो जाता है।
503 Service Unavailable
- मतलब: सर्वर अभी नई रिक्वेस्ट नहीं ले सकता। या तो उस पर क्षमता से ज़्यादा भीड़ है, या मेंटेनेंस चल रहा है।
- किसकी तरफ़: साइट की। किसी नतीजे या फ़ॉर्म की आख़िरी तारीख़ वाले दिन, जब लाखों लोग एक साथ एक ही पेज खोलते हैं, यही कोड सबसे आम है।
- आप क्या करें: कुछ मिनट रुकें और एक बार कोशिश करें। हो सके तो कम भीड़ वाले समय पर खोलें, जैसे सुबह जल्दी या देर रात।
504 Gateway Timeout
- मतलब: proxy ने पीछे वाले सर्वर का इंतज़ार किया, और समय सीमा ख़त्म हो गई।
- किसकी तरफ़: साइट की। पीछे वाला सर्वर बहुत धीमा है या पूरी तरह अटका हुआ है।
- आप क्या करें: 503 जैसा ही। फ़ॉर्म जमा करते समय 504 आए, तो पहले पुष्टि का मैसेज देखें, क्योंकि हो सकता है पीछे वाले सर्वर ने काम पूरा कर लिया हो और सिर्फ़ जवाब देर से आया हो।
503 पर बार बार रिफ्रेश करने से पेज क्यों नहीं खुलता?
503 का मतलब है कि सर्वर पहले से ही भीड़ नहीं संभाल पा रहा। हर रिफ्रेश एक नई रिक्वेस्ट है, जो उसी भीड़ में जुड़ जाती है। जब हज़ारों लोग एक साथ हर दो सेकंड में रिफ्रेश दबाते हैं, तो सर्वर पर बोझ कम होने के बजाय बढ़ता है।
दूसरा कारण आपके अपने लिए है। बहुत सी साइटें एक IP से आने वाली रिक्वेस्ट की सीमा रखती हैं। उस सीमा के पार आपको 429 मिलता है, और अब आपको सर्वर के ठीक होने के बाद भी अपनी रोक ख़त्म होने का इंतज़ार करना पड़ता है। इसलिए दो से पाँच मिनट रुककर एक बार कोशिश करना, लगातार रिफ्रेश से बेहतर है।
VPN चालू होने पर 403 Forbidden क्यों आता है?
बहुत सी साइटों के आगे एक WAF (वेब एप्लिकेशन फ़ायरवॉल) होता है। यह हर रिक्वेस्ट को साइट तक पहुँचने से पहले जाँचता है, और नियम न मिलने पर 403 लौटा देता है।
VPN चालू होने पर साइट को आपका असली IP नहीं दिखता। उसे VPN सर्वर का IP दिखता है, जो अक्सर किसी दूसरे देश का होता है। कई साइटें दूसरे देशों से आने वाला ट्रैफ़िक रोकती हैं। कई साइटें उन IP पतों को भी रोकती हैं जिन्हें एक साथ बहुत से लोग इस्तेमाल करते हैं, क्योंकि ऐसे पतों से स्वचालित bots भी आते हैं। VPN का IP अक्सर इन दोनों शर्तों में आता है, इसलिए फ़ायरवॉल आपको रोक देता है, भले ही आपने कुछ गलत न किया हो।
जाँच आसान है। VPN बंद करें और पेज दोबारा खोलें। 403 चला जाए, तो कारण VPN का IP था।
अगर वेबसाइट आपकी है: 403 और 502 कहाँ से आते हैं
यह हिस्सा उनके लिए है जो खुद अपनी साइट चलाते हैं। यहाँ हर विषय का सिर्फ़ ढाँचा है। पूरा सेटअप अपनी वेबसाइट खुद होस्ट करने की गाइड में है।
nginx या Apache पर 403 के दो आम कारण हैं। पहला कारण फ़ाइल की अनुमतियाँ हैं। Ubuntu और Debian पर nginx का worker www-data यूज़र के रूप में चलता है। अगर यह यूज़र फ़ाइल नहीं पढ़ सकता, या रास्ते की किसी डायरेक्टरी में अंदर नहीं जा सकता, तो nginx 403 लौटाता है और error log में open() "/srv/site/index.html" failed (13: Permission denied) लिखता है। namei -l /srv/site/index.html रास्ते की हर डायरेक्टरी की अनुमति एक साथ दिखा देता है। अगर डायरेक्टरी में index फ़ाइल ही नहीं है, तो log में directory index of "/srv/site/" is forbidden दिखता है। दूसरा कारण config में लिखा कोई रोकने वाला नियम है, जैसे nginx में deny all; या Apache में Require all denied। Apache ऐसे में log में AH01630: client denied by server configuration लिखता है।
reverse proxy 502 तब देता है जब पीछे वाला ऐप बंद हो। nginx proxy_pass में लिखे पते पर ऐप से जुड़ने की कोशिश करता है। ऐप चल नहीं रहा, तो उस पोर्ट पर कोई सुन नहीं रहा, इसलिए कनेक्शन तुरंत मना हो जाता है। nginx तब 502 भेजता है और log में connect() failed (111: Connection refused) while connecting to upstream लिखता है। ऐप चल रहा हो पर बहुत धीमा हो, तो नतीजा 504 होता है और log में upstream timed out (110: Connection timed out) दिखता है। ऐप सच में सुन रहा है या नहीं, यह Linux पर पोर्ट खुला है या नहीं जाँचने से पता चलता है। proxy_pass की हर लाइन का मतलब nginx reverse proxy config की व्याख्या में है।
जवाब हमेशा logs में होता है। access log हर रिक्वेस्ट और उसका स्टेटस कोड दर्ज करता है। error log बताता है कि कोड क्यों आया। Ubuntu पर डिफ़ॉल्ट जगहें ये हैं:
sudo tail -n 50 /var/log/nginx/error.log
sudo tail -n 50 /var/log/nginx/access.log
sudo tail -n 50 /var/log/apache2/error.lognginx के डिफ़ॉल्ट access log फ़ॉर्मेट में नौवाँ कॉलम स्टेटस कोड है। यह कमांड गिनती करती है कि कौन सा कोड कितनी बार आया:
sudo awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c | sort -rnअचानक बहुत सारे 404 या 429 दिखें, तो अक्सर कोई bot आपकी साइट के पेज तेज़ी से एक के बाद एक माँग रहा होता है। ऐसे ट्रैफ़िक को जानबूझकर 403 या 429 देना सर्वर पर AI crawlers को रोकने का हिस्सा है।
FAQ: HTTP एरर कोड पर आम सवाल
403 Forbidden आने पर क्या गलती मेरी है?
आम तौर पर नहीं। 403 का मतलब है कि सर्वर ने आपकी रिक्वेस्ट समझी पर देने से मना किया। यह फ़ैसला साइट के नियमों का होता है, पर उसकी वजह आपका IP पता या चालू VPN हो सकता है। VPN बंद करके या मोबाइल डेटा से पेज खोलकर देखें। फिर भी 403 रहे, तो वह पेज आपके लिए बंद है और साइट से संपर्क करना ही रास्ता है।
503 Service Unavailable पर बार बार रिफ्रेश करने से पेज जल्दी खुलेगा?
शायद ही कभी। 503 का मतलब है कि सर्वर भीड़ नहीं संभाल पा रहा, और हर रिफ्रेश उसी भीड़ में एक और रिक्वेस्ट जोड़ता है। कई साइटें बहुत तेज़ रिफ्रेश करने वालों को 429 Too Many Requests देती हैं, जिसके बाद आपको और ज़्यादा इंतज़ार करना पड़ता है। दो से पाँच मिनट रुककर एक बार कोशिश करें।
कनेक्शन टाइमआउट और 504 Gateway Timeout में क्या फ़र्क है?
टाइमआउट में किसी ने जवाब नहीं दिया, इसलिए कोई HTTP कोड नहीं होता। ब्राउज़र ERR_CONNECTION_TIMED_OUT जैसा संदेश दिखाता है। 504 में साइट के आगे वाले proxy सर्वर ने जवाब दिया, पर उसके पीछे वाला ऐप सर्वर समय पर जवाब नहीं दे पाया। दोनों में गलती आम तौर पर साइट की तरफ़ होती है।
404 Not Found का मतलब क्या यह है कि वेबसाइट बंद है?
नहीं। 404 भेजने के लिए सर्वर का चलना ज़रूरी है। इसका मतलब सिर्फ़ इतना है कि उस खास पते पर कोई पेज नहीं है। आम कारण URL में टाइपिंग की गलती या पुराना लिंक होता है। कभी साइट पेज हटा भी देती है। साइट के होमपेज से वही पेज ढूँढकर देखें।
502 Bad Gateway किसकी गलती है?
साइट की। 502 तब आता है जब साइट के आगे वाला proxy सर्वर पीछे वाले ऐप से जुड़ नहीं पाता या उससे टूटा हुआ जवाब पाता है। अक्सर ऐप बंद होता है या रीस्टार्ट हो रहा होता है। विज़िटर के तौर पर आप सिर्फ़ एक दो मिनट रुककर दोबारा कोशिश कर सकते हैं। साइट आपकी है, तो nginx का error log connect() failed (111: Connection refused) दिखाएगा, जिसका मतलब है कि ऐप उस पोर्ट पर सुन नहीं रहा।