Nginx एक पोर्ट पर सुनता है, केवल अगर 80 पोर्ट पर सेट हो तो प्रतिक्रिया करता है


10

ओएस: फंटू। मैंने NGINX को पोर्ट 81 के लिए बाध्य किया है (मैं इसे संक्रमण के आसानी के लिए थोड़े समय के लिए अपने अपाचे सर्वर के साथ चलाना चाहता हूं), और यह पोर्ट पर सुनता है (यदि मैं दूसरे पोर्ट पर इंगित करता हूं, तो मुझे "कनेक्शन मना कर दिया गया" का उपयोग करके) लेकिन पोर्ट 81 के उपयोग से मुझे "कनेक्टेड" मिलता है) लेकिन यह कभी भी किसी भी तरह की HTML प्रतिक्रिया नहीं देता है!

पोर्ट पर एक wget चलाने पर, लोकलहोस्ट से, मुझे मिलता है:

# wget localhost:81
-2014-04-16 23:56:45- http://localhost:81/
Resolving localhost... 127.0.0.1
Connecting to localhost|127.0.0.1|:81... connected.
HTTP request sent, awaiting response...

दूसरे कंप्यूटर पर ...

$ wget 192.168.18.42:81
-2014-04-16 23:57:19- http://192.168.18.42:81/
Connecting to 192.168.18.42:81... connected.
HTTP request sent, awaiting response...

उसके बाद कभी कुछ नहीं होता। दस्तावेज़ मौजूद हैं, यह सामान्य Funtoo nginx.conf है।

अद्यतन: मैं इसे पोर्ट 80 को सुनने के लिए बना सकता हूं, लेकिन यह अभी भी मुझे परेशान करता है कि मैं इसे किसी भी पोर्ट पर काम करने के लिए नहीं पा सकता हूं ...।

netstat -aWn | grep 81 | grep LISTEN
tcp 60 0 0.0.0.0:81 0.0.0.0:* LISTEN

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

user nginx nginx;
worker_rlimit_nofile 6400;

error_log /var/log/nginx/error_log info;

events {
    worker_connections 1024;
    use epoll;
}

http {
    include /etc/nginx/mime.types;

    # This causes files with an unknown MIME type to trigger a download action in the browser:
    default_type application/octet-stream;

    log_format main
        '$remote_addr - $remote_user [$time_local] '
        '"$request" $status $bytes_sent '
        '"$http_referer" "$http_user_agent" '
        '"$gzip_ratio"';

    client_max_body_size 64m;

    # Don't follow symlink if the symlink's owner is not the target owner.

    disable_symlinks if_not_owner;
    server_tokens off;
    ignore_invalid_headers on;

    gzip off;
    gzip_vary on;
    gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript text/x-js image/x-icon image/bmp;

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;

    index index.html;
    include /etc/nginx/sites-enabled/*;
}

सर्वर ब्लॉक:

server {
    listen  *:81;
    root    /usr/share/nginx/html;
    location / {
        index   index.html;
    }
}

क्या आपके पास एक पैकेट फ़िल्टर सक्षम है ( iptables)? यदि हां, तो क्या आपने पोर्ट 81 को अनुमति देने के लिए याद किया था?
एंड्रियास विसे १

iptables सक्षम नहीं है।
एविएटर 45003

2
फिर आपके कॉन्फ़िगरेशन के प्रासंगिक भाग उपयोगी होंगे, मुझे लगता है।
एंड्रियास विसे १

जवाबों:


5

निम्नलिखित सर्वर ब्लॉक का प्रयास करें:

server {
   listen       81 default_server;
    server_name _;    
    root    /usr/share/nginx/html;
    location / {
        index   index.html;
    }
}

अंडरस्कोर _एक वाइल्डकार्ड है, इसके अलावा *:81संभावना यह नहीं है कि आप क्या उम्मीद करते हैं, बस पोर्ट नंबर का उपयोग करें।

इसके बाद अपनी सेटिंग्स का परीक्षण करें nginx -t:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

फिर से शुरू करें:

service nginx restart

Netstat के साथ टेस्ट करें:

root@gitlab:~# netstat -napl | grep 80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      7903/nginx      
tcp        0      0 127.0.0.1:8080          0.0.0.0:*               LISTEN      2662/unicorn.

अपडेट करें

मैंने एक परीक्षण प्रणाली पर नगीनेक्स स्थापित किया। स्टॉक nginx.confफ़ाइल और 1 लाइन में परिवर्तन के साथ /etc/nginx/sites-enabled/default, मैं पोर्ट 81 से फ़ाइलों को पुनः प्राप्त करने में सक्षम था

cat /etc/nginx/sites-enabled/default
server {

    listen   81;
    server_name localhost;
    root /usr/share/nginx/www;
    index index.html index.htm;


    location / {
        try_files $uri $uri/ /index.html;
    }

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

}

नेटस्टैट आउटपुट:

netstat -napl | grep 81
tcp        0      0 0.0.0.0:81              0.0.0.0:*               LISTEN      3432/nginx

फ़ाइल डाउनलोड करें:

$ wget localhost:81

फ़ाइल की सामग्री:

$ cat index.html
<html>
<head>
<title>Welcome to nginx!</title>
</head>
<body bgcolor="white" text="black">
<center><h1>Welcome to nginx!</h1></center>
</body>
</html>

Update2

टेस्ट पोर्ट:

 root@gitlab:# nc -vz localhost 81
 Connection to localhost 81 port [tcp/*] succeeded!
 root@gitlab:# nc -vz localhost 443
 nc: connect to localhost port 443 (tcp) failed: Connection refused

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 9 0 0.0.0.0:81 0.0.0.0:* LISTEN 1026/nginx: master फिर भी कोई सफलता नहीं मिली। क्या Recv-Q किसी प्रकार का 9 संकेत है? यह हर बार जब भी मैं एक दांव या ऐसा कुछ करने की कोशिश करता हूं। सर्वर ब्लॉक ठीक वैसा ही है जैसा आपने निर्धारित किया है।
एविएटर 45003

मुझे यकीन नहीं है कि Recv-Q क्या है। क्या आपके पास / etc / nginx / sites-available में कुछ है?
स्पूडर

1
@TC कृपया मेरा अद्यतन उत्तर देखें।
स्पूडर

नई कॉन्फ़िग फ़ाइल का अनुसरण करते हुए भी मेरी स्थिति में कोई परिवर्तन नहीं हुआ। क्या यह संभव है कि कुछ अवरुद्ध पोर्ट 80 पोर्ट न करें? क्या कोई ऐसा तरीका है जिससे मैं इसका परीक्षण कर सकता हूं?
Aviator45003

1
टीसी हाँ, उपयोग nc, को अपडेट हुआ
spuder

4

बड़ी समस्या है? Nginx ने 0. के लिए कार्यकर्ता_प्रोसेस सेट किया था। मैंने autoअपने nginx.conf के शीर्ष में इसे स्थापित करने वाली एक लाइन जोड़ी, और दुनिया के साथ सब ठीक था!

आपके समय और धैर्य के लिए आप सभी का धन्यवाद।


तुम बस मुझे Nginx विन्यास उत्पादन एक templating के लिए इस्तेमाल की अपने स्वचालित चर की हताशा-जाहिरा तौर पर एक 1 के बारे में एक घंटे के बाद देने से बचाया 0के लिए worker_processes, और मैं पूरी तरह से करने के बाद मुश्किल में पड़ गया चौगुनी की जाँच हर दूसरे कॉन्फ़िग फ़ाइल, डीएनएस, मेजबान, आदि
geerlingguy
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.