port 80: No route to host
我正在尝试使机器 A(Ubuntu 16.04)上的 nginx“状态”页面可从机器 B(Ubuntu 20.04)访问,但是在尝试访问该页面时出现错误。
两台机器通过内部网络连接,地址为 10.3.1.1 和 10.3.2.201。
ping 在两个方向上都可以工作,并且我已经设置了我的 nginx conf 文件,如下所示:
server {
listen 127.0.0.1;
listen 10.3.1.1:80;
root /home/www/public_html;
index index.html;
location /basic_status {
stub_status on;
allow 127.0.0.1;
allow 10.3.2.201;
allow 10.3.1.1;
deny all;
}
}
由于某种原因,我可以/basic_status
从机器 A 访问机器 A 上的页面,但不能从机器 B 访问:
ubuntu@machine-a:~$ curl http://10.3.1.1/basic_status
Active connections: 1
server accepts handled requests
187325 187325 2010480
Reading: 0 Writing: 1 Waiting: 0
ubuntu@machine-a:~$ curl http://127.0.0.1/basic_status
Active connections: 1
server accepts handled requests
187326 187326 2010481
Reading: 0 Writing: 1 Waiting: 0
ubuntu@machine-b:~$ curl http://10.3.1.1/basic_status
curl: (7) Failed to connect to 10.3.1.1 port 80: No route to host
ufw 在机器 A 上配置为接受来自任何地方到端口 80 的传入连接:
ubuntu@machine-a:~$ sudo ufw status
Status: active
To Action From
-- ------ ----
80 ALLOW Anywhere
443 ALLOW Anywhere
80 (v6) ALLOW Anywhere (v6)
443 (v6) ALLOW Anywhere (v6)
此时我不知道还有什么其他设置可能导致这种情况......
答案1
经过进一步调查,似乎 UFW 是“说实话”的 - 但它只是代表您为 iptables 创建规则……并且已经存在一堆取代 UFW 的 iptables 规则。经过彻底清理后,它现在可以正常工作了。