![Nginx 仅对外部响应 80 端口](https://linux22.com/image/695490/Nginx%20%E4%BB%85%E5%AF%B9%E5%A4%96%E9%83%A8%E5%93%8D%E5%BA%94%2080%20%E7%AB%AF%E5%8F%A3.png)
我正在尝试设置一个用于 Django 的 Nginx 服务器。一开始我只想让它在非标准端口上运行。
什么时候起作用?
我使用默认配置安装了 nginx,如果我在浏览器中访问我的服务器 IP,我会立即看到基本的欢迎页面。
但是,如果我将 sites-available/default 中的端口更改为 80 以外的任何端口,则会得到较长的响应时间,然后出现超时。这个人似乎遇到了类似的问题,但从未发布任何答案。
我的设置
我在跑:
- nginx 1.10.1
- Ubuntu 14.04.5
- 我没有运行防火墙
- 我有伍伊已安装,但服务器尚未运行(它是一个 django 开发服务器)
- 我在 nginx 安装中所做的所有更改是
listen: 80
。listen: 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