Nginx侦听端口,仅在设置为端口80时响应


10

操作系统:Funtoo。我已经将NGINX绑定到端口81(为了方便过渡,我想在我的Apache服务器上短时间运行它),并且它侦听该端口(如果我使用wget指向另一个端口,则会收到“拒绝连接”,但是使用端口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吗?
Andreas Wiese 2014年

iptables未启用。
Aviator45003 2014年

2
我想,然后配置的相关部分会有所帮助。
Andreas Wiese 2014年

Answers:


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

重新启动nginx:

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。将库存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输出:

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>

更新2

测试端口:

 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有点暗示吗?每当我尝试wget之类的东西时,它就会上升。服务器块完全符合您的规定。
Aviator45003 2014年

我不确定Recv-Q是什么。/ etc / nginx / sites-available中有什么吗?
spuder 2014年

1
@TC请参阅我的最新答案。
spuder 2014年

即使遵循新的配置文件,也不会更改我的状态。是否有可能阻止端口80的端口?有办法测试吗?
Aviator45003 2014年

1
TC是,请使用nc,请参阅更新
spuder 2014年

4

原来是大问题?Nginx已经将worker_processes设置为0 auto

谢谢大家的时间和耐心。


大约1个小时的挫败之后,您刚刚让我免于放弃-显然,我用于模板化Nginx配置输出0for的自动变量之一,对worker_processes所有其他配置文件,DNS,主机等进行了四次检查之后,我完全不知所措
geerlingguy
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.