Nginx lắng nghe tại một cổng, chỉ trả lời nếu được đặt thành cổng 80


10

HĐH: Funtoo. Tôi đã ràng buộc NGINX với cổng 81 (Tôi muốn chạy nó cùng với máy chủ Apache của tôi trong một thời gian ngắn để dễ dàng chuyển đổi) và nó lắng nghe tại cổng (Nếu tôi trỏ đến một cổng khác, sử dụng wget tôi sẽ nhận được "Kết nối bị từ chối", nhưng sử dụng cổng 81 tôi nhận được "kết nối") nhưng nó không bao giờ phục vụ phản hồi HTML dưới bất kỳ hình thức nào!

Khi chạy wget trên cổng, từ localhost, tôi nhận được:

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

Trên một máy tính khác ...

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

Không có gì xảy ra sau đó. Các tài liệu tồn tại, đó là Funtoo nginx.conf bình thường.

CẬP NHẬT: Tôi có thể làm cho nó nghe cổng 80, nhưng nó vẫn khiến tôi không thể làm cho nó hoạt động trên bất kỳ cổng nào ....

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

Chỉnh sửa: Tập tin cấu hình:

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/*;
}

Khối máy chủ:

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

Bạn có bật bộ lọc gói ( iptables) không? Nếu vậy, bạn có nhớ cho phép cổng 81 không?
Andreas Wiese

iptables không được kích hoạt.
Aviator45003

2
Sau đó, các phần có liên quan trong cấu hình của bạn sẽ hữu ích, tôi đoán vậy.
Andreas Wiese

Câu trả lời:


5

Hãy thử khối máy chủ sau:

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

Gạch dưới _là ký tự đại diện, Ngoài ra *:81có khả năng không làm những gì bạn mong đợi, chỉ sử dụng số cổng.

Sau đó kiểm tra cài đặt của bạn với nginx -t:

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

Khởi động lại nginx:

service nginx restart

Kiểm tra với 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.

Cập nhật

Tôi đã cài đặt nginx trên một hệ thống thử nghiệm. Với nginx.conftệp chứng khoán và thay đổi 1 dòng thành /etc/nginx/sites-enabled/default, tôi có thể truy xuất tệp từ cổng 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;
    }

}

Sản lượng Netstat:

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

Tải tập tin:

$ wget localhost:81

Nội dung của tập tin:

$ 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>

Cập nhật2

Cổng kiểm tra:

 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 Vẫn không thành công. Recv-Q có phải là một gợi ý nào đó không? Nó tăng lên mỗi khi tôi thử một wget hoặc một cái gì đó như thế. Khối máy chủ chính xác như bạn quy định.
Aviator45003

Tôi không chắc Recv-Q là gì. Bạn có bất cứ điều gì trong / etc / nginx / site-Available không?
spuder

1
@TC Xin vui lòng xem câu trả lời cập nhật của tôi.
spuder

không thay đổi trạng thái của tôi, ngay cả sau tệp cấu hình mới. Có thể có một cái gì đó chặn cổng không phải cổng 80? Có cách nào tôi có thể kiểm tra điều này?
Aviator45003

1
TC có, sử dụng nc, xem cập nhật
spuder

4

Hóa ra vấn đề lớn? Nginx đã đặt worker_ Processes thành 0. Tôi đã thêm một dòng đặt nó autovào đầu nginx.conf của tôi và tất cả đều tốt với thế giới!

Cảm ơn tất cả các bạn đã dành thời gian và sự kiên nhẫn.


Bạn chỉ cứu tôi khỏi bỏ sau khoảng 1 giờ thất vọng-rõ ràng một trong những biến tự động của tôi sử dụng cho templating cấu hình Nginx sản lượng một 0cho worker_processes, và tôi đã hoàn toàn sửng sốt sau khi tăng gấp bốn lần kiểm tra tất cả các tập tin cấu hình khác, DNS, host, vv
ge Muffguy
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.