【发布时间】:2026-02-13 12:55:01
【问题描述】:
我的 Centos 7 服务器正在运行 apache 2.4.6,并且正在使用 mod_wsgi 提供一个 django webapp。我的问题是我无法从另一台计算机的浏览器访问服务器 url。我没有从 apache 得到任何错误,它的启动和运行没有问题。我已在 http.conf 文件中将错误日志设置为“调试”,但仍然没有错误。我知道服务器实际上是通过 ping 连接到互联网的,我知道它正在通过运行监听端口:80
netstat -tunlp | grep 80.
tcp 0 0 0.0.0.0:60080 0.0.0.0:* LISTEN 3841/name-gu
tcp6 0 0 :::80 :::* LISTEN 13882/httpd
我也暂时关闭了服务器端的所有防火墙
我的settings.py有ALLOWED_HOSTS下的url、ip地址和localhost
如何调试此问题,以便我可以查看错误?
日志:
让我知道是否需要更多信息
在服务器计算机上运行 tcpdump -nn tcp port 80
然后在我的机器上运行curl -v myurl.com 并在我的服务器上得到这些结果:
13:11:52.225076 IP 10.0.24.67.40658 > 10.0.26.20.80: Flags [S], seq 3327782620, win 29200, options [mss 1460,sackOK,TS val 36451589 ecr 0,nop,wscale 7], length 0
13:11:52.225355 IP 10.0.26.20.80 > 10.0.24.67.40658: Flags [S.], seq 1689726058, ack 3327782621, win 28960, options [mss 1460,sackOK,TS val 73904848 ecr 36451589,nop,wscale 7], length 0
13:11:52.225960 IP 10.0.24.67.40658 > 10.0.26.20.80: Flags [.], ack 1, win 229, options [nop,nop,TS val 36451590 ecr 73904848], length 0
13:11:52.226198 IP 10.0.24.67.40658 > 10.0.26.20.80: Flags [P.], seq 1:101, ack 1, win 229, options [nop,nop,TS val 36451590 ecr 73904848], length 100: HTTP: GET / HTTP/1.1
13:11:52.226448 IP 10.0.26.20.80 > 10.0.24.67.40658: Flags [.], ack 101, win 227, options [nop,nop,TS val 73904849 ecr 36451590], length 0
13:11:52.231414 IP 10.0.26.20.80 > 10.0.24.67.40658: Flags [P.], seq 1:286, ack 101, win 227, options [nop,nop,TS val 73904854 ecr 36451590], length 285: HTTP: HTTP/1.1 200 OK
13:11:52.232052 IP 10.0.24.67.40658 > 10.0.26.20.80: Flags [.], ack 286, win 237, options [nop,nop,TS val 36451596 ecr 73904854], length 0
13:11:52.232814 IP 10.0.24.67.40658 > 10.0.26.20.80: Flags [F.], seq 101, ack 286, win 237, options [nop,nop,TS val 36451597 ecr 73904854], length 0
13:11:52.233003 IP 10.0.26.20.80 > 10.0.24.67.40658: Flags [F.], seq 286, ack 102, win 227, options [nop,nop,TS val 73904856 ecr 36451597], length 0
13:11:52.233414 IP 10.0.24.67.40658 > 10.0.26.20.80: Flags [.], ack 287, win 237, options [nop,nop,TS val 36451597 ecr 73904856], length 0
【问题讨论】:
-
“无法访问服务器”是什么意思?您是否收到超时或 http 状态代码 >= 400 或带有空正文的 OK (200) 响应?您可以通过浏览器中的“检查/网络”或直接在服务器上通过命令行实用程序更好地检查它,而无需禁用防火墙。例如。通过命令
curl -i http://mysite.example.com。你也可以在/var/log/http/access_log看到状态码。 -
这十个数据包是一个小的HTTP GET请求的正常通信,响应很小。带有 [S] (syn)、ack (acknowledgment) 和 [F] (fin) 标志的数据包仅用于握手以初始化 TCP 连接、确认收到的数据包并正确关闭连接。只有两个数据包具有非零长度并且它们具有非常清晰的 cmets:
HTTP: GET / HTTP/1.1和HTTP: HTTP/1.1 200 OK。您可以通过浏览器发送相同的请求,并在此处仅保留此通信。 -
我不明白您所说的“您可以通过浏览器发送相同的请求并在此处仅留下此通信”是什么意思。当我的浏览器不接受或向服务器发送请求时,如何向浏览器发送相同的请求?
-
我写它是为了确定你的浏览器没有发送任何数据包,并且问题与 Apache、Django 或 CentOS 无关,甚至根本与服务器无关。文本“Blocked... unsecured network”表示它与某些安全策略有关。现在对我来说已经不在话题范围内了。对于您的网络管理员来说,这更像是一个问题。您可能也无法在浏览器中打开该网络上任何设备(如网络打印机)的 Web 界面。