Nginx একটি বন্দরে শুনবে, শুধুমাত্র 80 পোর্টে সেট করা থাকলে সাড়া দেয়


10

ওএস: ফান্টু আমি এনজিআইএনএক্সটিকে 81 বন্দরটিতে আবদ্ধ করেছি (আমি সংক্ষেপে স্বাচ্ছন্দ্যের জন্য অল্প সময়ের জন্য এটি আমার অ্যাপাচি সার্ভারের পাশাপাশি চালাতে চাই), এবং এটি বন্দরে শোনা (যদি আমি অন্য কোনও বন্দরের দিকে নির্দেশ করি তবে উইজেট ব্যবহার করে আমি "সংযোগ অস্বীকার" পেয়েছি, তবে পোর্ট ৮১ ব্যবহার করে আমি "সংযুক্ত" হয়েছি) তবে এটি কখনই কোনও HTML প্রতিক্রিয়া পরিবেশন করে না!

লোকালহোস্ট থেকে বন্দরে কোনও উইজেট চালানোর সময়, আমি পাই:

# 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...

এর পরে আর কিছু হয় না। দস্তাবেজগুলি বিদ্যমান, এটি সাধারণ ফন্টু 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 বন্দরটি অনুমতি দেওয়ার কথা মনে রেখেছেন?
Andreas Wiese

iptables সক্ষম করা হয় না।
বিমানচালক 45003

2
তাহলে আপনার কনফিগারেশনের প্রাসঙ্গিক অংশগুলি সহায়ক হবে, আমার ধারণা।
Andreas Wiese

উত্তর:


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

নেটস্ট্যাট দিয়ে পরীক্ষা করুন:

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 তবুও কোনও সাফল্য নেই। রেকভি-কি 9 হ'ল কোনও ধরণের ইঙ্গিত? প্রতিবার আমি কোনও উইজেট বা এরকম কিছু চেষ্টা করার সময় এটি উঠে যায়। সার্ভার ব্লকটি ঠিক আপনার ঠিক মতোই।
Aviator45003

রেকভ-কি আসলে আমি নিশ্চিত নই। আপনার কাছে / ইত্যাদি / এনজিনেক্স / সাইট-উপলভ্য কিছু আছে?
spuder

1
@ টিটিসি আমার আপডেট করা উত্তর দেখুন।
spuder

এমনকি আমার কনফিগারেশন ফাইলের পরেও আমার স্ট্যাটাসে কোনও পরিবর্তন হবে না। পোর্ট 80 বন্দর নয় এমন কিছু অবরুদ্ধ বন্দর রয়েছে কি এটি সম্ভব? আমি কি এটি পরীক্ষা করার উপায় আছে?
Aviator45003

1
টিসি হ্যাঁ, এনসি ব্যবহার করুন, আপডেট দেখুন
স্পুডার

4

বড় সমস্যা দেখা যাচ্ছে? autoএনগিনেক্স কর্মী_প্রসেসগুলি 0 তে সেট করে রেখেছিল আমি আমার nginx.conf এর শীর্ষে সেট করে একটি লাইন যুক্ত করেছি, এবং সমস্ত কিছু বিশ্বের সাথে ভাল ছিল!

আপনার সময় এবং ধৈর্য জন্য আপনাকে ধন্যবাদ।


আপনি শুধু আমাকে nginx কনফিগারেশন আউটপুট একটি টেমপ্লেট ব্যবহার করা আমার স্বয়ংক্রিয় ভেরিয়েবল হতাশা-দৃশ্যত এক 1 ঘন্টা পর ছোড় থেকে রক্ষা 0জন্য worker_processes, এবং আমি সম্পূর্ণরূপে পর আক্কেল গুড়ুম হয় চতুর্গুণ-পরীক্ষণের প্রত্যেক অন্যান্য কনফিগ ফাইল, DNS- র সর্বশক্তিমান, ইত্যাদি
geerlingguy
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.