Nginx 仅对外部响应 80 端口

Nginx 仅对外部响应 80 端口

我正在尝试设置一个用于 Django 的 Nginx 服务器。一开始我只想让它在非标准端口上运行。

什么时候起作用?

我使用默认配置安装了 nginx,如果我在浏览器中访问我的服务器 IP,我会立即看到基本的欢迎页面。

但是,如果我将 sites-available/default 中的端口更改为 80 以外的任何端口,则会得到较长的响应时间,然后出现超时。这个人似乎遇到了类似的问题,但从未发布任何答案。

在此处输入图片描述

我的设置

我在跑:

  • nginx 1.10.1
  • Ubuntu 14.04.5
  • 我没有运行防火墙
  • 我有伍伊已安装,但服务器尚未运行(它是一个 django 开发服务器)
  • 我在 nginx 安装中所做的所有更改是listen: 80listen: 81它在端口 80 上完美运行,而在端口 81 上则没有任何运行。
  • 我尝试将服务器名称更改为机器的 IP,但是没有帮助。
  • 这是在数字海洋 VPS 上,所以唯一运行的就是我安装的东西。
  • wget localhost:81 下载服务器页面,显然内部正在运行,但外部没有任何反应

我错过了什么?我不知道如何进一步调试它。

IP 表输出

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere
REJECT     all  --  loopback/8           anywhere             reject-with icmp-port-unreachable
ACCEPT     icmp --  anywhere             anywhere             state NEW icmp echo-request
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh state NEW
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http state NEW
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:https state NEW
ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED
LOG        all  --  anywhere             anywhere             limit: avg 5/min burst 5 LOG level debug prefix "iptables_INPUT_denied: "
REJECT     all  --  anywhere             anywhere             reject-with icmp-port-unreachable

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
LOG        all  --  anywhere             anywhere             limit: avg 5/min burst 5 LOG level debug prefix "iptables_FORWARD_denied: "
REJECT     all  --  anywhere             anywhere             reject-with icmp-port-unreachable

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

相关输出netstat -napl

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      903/sshd
tcp        0      0 0.0.0.0:81              0.0.0.0:*               LISTEN      756/nginx -g daemon

Nginx 错误日志仅显示此消息(access.log 为空)

2016/12/17 21:17:08 [notice] 14556#14556: signal process started

Nginx 配置是默认的:

默认服务器配置

server {
        listen 81 default_server;
        #listen [::]:80 default_server;
        root /var/www/html;

        # Add index.php to the list if you are using PHP
        index index.html index.htm index.nginx-debian.html;

        server_name my_ip;
        ...

答案1

在您的防火墙规则中,我们可以看到:

ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http state NEW
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:https state NEW

我找不到允许端口 81 上的流量的规则。

您知道此服务器上的 iptables 在哪里/如何管理吗?您可能想在其中复制一条规则。

您应该能够直接使用 iptables 进行非持久性更改:

iptables -I INPUT -p tcp -m state --state NEW --dport 81 -j ACCEPT

答案2

简短版本

sudo ufw allow 81

相关内容