सवाल कनेक्ट () असफल रहा (111: कनेक्शन से इनकार कर दिया) अपस्ट्रीम से कनेक्ट करते समय


मैं अनुभव कर रहा हूँ 502 Gateway किसी निर्देशिका में PHP फ़ाइल तक पहुंचने पर त्रुटियां (http://example.com/dev/index.php)। लॉग बस यह कहते हैं:

2011/09/30 23:47:54 [error] 31160#0: *35 connect() failed (111: Connection refused) while connecting to upstream, client: xx.xx.xx.xx, server: domain.com, request: "GET /dev/ HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "domain.com"

मैंने पहले कभी इसका अनुभव नहीं किया है। इस प्रकार के लिए समाधान क्या है 502 Gateway त्रुटि?

यह है nginx.conf:

user www-data;
worker_processes 4;
pid /var/run/nginx.pid;

events {
    worker_connections 768;
    # multi_accept on;
}

http {

    ##
    # Basic Settings
    ##

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    # server_tokens off;

    # server_names_hash_bucket_size 64;
    # server_name_in_redirect off;

    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    ##
    # Logging Settings
    ##

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    ##
    # Gzip Settings
    ##

    gzip on;
    gzip_disable "msie6";

    # gzip_vary on;
    # gzip_proxied any;
    # gzip_comp_level 6;
    # gzip_buffers 16 8k;
    # gzip_http_version 1.1;
    # gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;

    ##
    # Virtual Host Configs
    ##

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}


#mail {
#   # See sample authentication script at:
#   # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
# 
#   # auth_http localhost/auth.php;
#   # pop3_capabilities "TOP" "USER";
#   # imap_capabilities "IMAP4rev1" "UIDPLUS";
# 
#   server {
#       listen     localhost:110;
#       protocol   pop3;
#       proxy      on;
#   }
# 
#   server {
#       listen     localhost:143;
#       protocol   imap;
#       proxy      on;
#   }
#}

67
2017-09-30 21:59


मूल


'कनेक्शन से इनकार' का मतलब है कि बैकएंड पोर्ट 9000 को नहीं सुनता है या इसकी कतार भर जाती है। यह समस्या बैकएंड itsef से संबंधित है। क्या आप लोकलहोस्ट 9000 टेलनेट करने में सक्षम हैं? आपको अपने बैकएंड और PHP लॉग भी देखना चाहिए। - Andrew
मेरी पोस्ट अपडेट की गई। मैं स्थानीयहोस्ट 9 000 को टेलनेट नहीं कर सका। - MacMac
वही त्रुटि जो मैं आप का सामना कर रहा था, यह यहां लिंक विवरण दर्ज करें आपको मदद कर सकते हैं - Tripathi29


जवाब:


ऐसा लगता है कि आपने Nginx के लिए बैकएंड शुरू नहीं किया है और कॉन्फ़िगर नहीं किया है। शुरु php-fpm और निम्नलिखित को जोड़ें nginx.conf, में http संदर्भ:

server {
    listen 127.0.0.1;
    server_name localhost;

    error_log /var/log/nginx/localhost.error_log info;

    root /var/www/localhost/htdocs;

    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        include /etc/nginx/conf.d/*.conf;
        include /etc/nginx/sites-enabled/*;

        fastcgi_intercept_errors        on;
        error_page 404 /error/404.php;
    }
}

35
2017-10-01 11:03



धन्यवाद आदमी, यह काम किया, मेरे पास नहीं था php-fpm स्थापित। चीयर्स। - MacMac
आप शुद्ध प्रतिभाशाली हैं। मैं इस बारे में 1.0000000 मिलियन मार्गदर्शिकाओं पर विश्वास नहीं कर सकता हूं, इस बात का उल्लेख नहीं है कि आपको बैकएंड को सक्षम करने के लिए "127.0.0.1" सुनना होगा। तुमने मुझे एक दुःस्वप्न से बचाया !!!
आपको यूनिक्स सॉकेट का उपयोग करने पर विचार करना चाहिए। इसे देखें netstat -l और के लिए देखें /var/run/php5-fpm.sock (इसके लिए कॉन्फ़िगर सामान्यतः /etc/php5/fpm/pool.d/www.conf में होता है। fastcgi_pass unix:<socket> - JohannesM
आपके पास होगा listen = /var/run/php5-fpm.sock के भीतर /etc/php5/fpm/pool.d/www.conf। लेकिन आप चाहेंगे listen = 9000 तथा ;listen = /var/run/php5-fpm.sock। अगर तुम मेरे जैसे थे। (या फिर वैकल्पिक रूप से आप जोहान्सएम द्वारा बुद्धिमान संकेत सुन सकते हैं। जो मुझे लगता है कि आपको कुछ ऐसा छोड़ देगा fastcgi_pass unix:/var/run/php5-fpm.sock;कहीं तुम्हारी nginx.conf) - n611x007
PHP 7.2 के साथ एक ही समस्या है। Httpd संदर्भ में फ़ाइल जोड़कर आपका क्या मतलब है? क्या यह एक अतिरिक्त conf फ़ाइल / etc / nginx / साइट-उपलब्ध / फ़ोल्डर या क्या होगा? - PeterKA


यह उत्तर केवल उन लोगों के लिए है जो इस तरह की त्रुटि प्राप्त करते हैं:

कनेक्ट () विफल (111: कनेक्शन से इनकार कर दिया) अपस्ट्रीम, क्लाइंट से कनेक्ट करते समय ....   FastCGI: // [:: 1]: 9000

Ip का उपयोग करने के लिए अपने nginx कॉन्फ़िगरेशन को फिर से लिखें, डीएनएस नहीं। उदाहरण के लिए, 127.0.0.1 के बजाय localhost, या ipv6 उपनाम / etc / hosts से हटा दें।


38
2018-02-18 15:58



आपने मुझे सही दिशा में इंगित किया! हालांकि मैं बस उपयोग कर रहा हूँ listen 80 ठीक था (और इसके साथ बहुत से उदाहरण हैं) लेकिन मैंने नहीं सोचा था कि आईपीवी 4 दोनों को निहित किया गया है (127.0.0.1) और आईपीवी 6 ([::1]) पते। - glarrain
मुझे बदलना पड़ा listen 80 default_server सेवा मेरे listen 0.0.0.0:80। - givanse
क्या आप बता सकते हैं क्यूं कर यह मदद करनी चाहिए? - kaiser
अधिकांश लिनक्स वितरण में नेटवर्किंग में ipv6 सक्षम है, लेकिन ipv6 उपयोग के लिए कॉन्फ़िगर किए गए सभी पैकेट नहीं हैं। मेरी राय में, जब nginx अपस्ट्रीम से कनेक्शन शुरू करता है, सिस्टम रिज़ॉल्वर पहले आईपीवी 6 एड्रेस देता है। PHP-fpm (centos 7.x) में बॉक्स से ऐसी कोई सेटिंग नहीं थी। और अधिकांश गाइड आईपीवी 4 संस्करण में सभी को समझाते हैं, आईपीवी 6 वायदा के बारे में भूल जाते हैं जिन्हें अक्षम या इस्तेमाल किया जाना चाहिए। - Quake1TF
Whooah, तो [:: 1] localhost आईपीवी 6 पता है! :) धन्यवाद! - lechup


इस तरह की त्रुटियां भी मिलीं। समस्या मेरा सार बैकएंड दो सर्वरों का संदर्भ था। php-fpm केवल सॉकेट में सूचीबद्ध था ...

# Upstream to abstract backend connection(s) for php
upstream php {
        server unix:/var/run/php5-fpm.sock;
        #server 127.0.0.1:9000;
} 

server {
    [...]

    location ~ \.php$ {
            # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini

            # With php5-fpm:
            fastcgi_pass php;
            fastcgi_index index.php;
            fastcgi_intercept_errors on;
            include fastcgi_params;
    }
}

3
2018-05-22 13:45





मेरे मामले में त्रुटि php5.6-fpm सेवा के लिए error_log फ़ाइल के लिए एक खराब स्थान था और इस प्रकार PHP-fpm सेवा शुरू करने में विफल रहा था तथा nginx उससे कनेक्ट करने में सक्षम नहीं था। आप इसे पा सकते हैं /etc/php/5.6/fpm/php.ini (आप उस संस्करण के साथ 5.6 को प्रतिस्थापित कर सकते हैं जो आप चल रहे हैं)।


0
2017-07-30 15:03





बंदरगाह 5000 पर सुनने वाले नोड सर्वर को प्रॉक्सी अनुरोधों के साथ एक ही समस्या थी। अनुरोधों का परिणाम होगा 200 OK लेकिन कभी-कभी 502 Bad Gateway बेतरतीब ढंग से। एनजीआईएनएक्स ने त्रुटि दिखायी:

connect() failed (111: Connection refused) while connecting to upstream, client: ..., server: ...

मेरा समाधान:

  1. नोड HTTP सर्वर को सेट करें बात सुनो सख्ती से आईपीवी 4 के लिए सख्ती से होस्टहोस्ट होस्ट के रूप में: server.listen(5000, 'localhost'); 
  2. किसी भी ipv6 सुनो निर्देश हटा दिया (listen [::]:80; या listen [::]:443 ssl default_server;)।
  3. आईपी ​​का उपयोग करने के लिए परिवर्तित स्थान ब्लॉक proxy_pass: proxy_pass http://127.0.0.1:5000 (नहीं proxy_pass http://localhost:5000)।

उम्मीद है कि यह किसी की मदद करता है।


0
2017-07-05 10:05





मुझे एक ही समस्या थी और सुनो कथन जोड़ना पड़ा

listen 127.0.0.1;

मेरे लिए काम किया

दिलचस्प है कि मेरे पास अन्य सर्वर ब्लॉक हैं जो इसके बिना काफी खुशी से चल रहे हैं!


-3
2017-11-26 22:48



यह तीन साल पहले पहले से ही उत्तर दिया गया है और स्वीकार कर लिया गया है। - Sven♦