我的Centos 7服务器正在运行apache 2.4.6,并且正在使用mod_wsgi提供Django webapp。我的问题是我无法从另一台计算机的浏览器访问服务器URL。我没有从apache及其启动和运行中获得任何错误。我已经在http.conf文件中将错误日志设置为“调试”,但仍然没有错误。我知道服务器实际上通过ping连接到Internet,我知道它正在通过运行在端口: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在下面有url,ip地址和localhost ALLOWED_HOSTS
我该如何调试此问题,以便检查错误?
日志:让我知道是否需要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
hynekcer..
6
首先,我将重点验证您是否可以访问Apache服务器上的某些静态测试页,因为它仅在IPv6端口上进行侦听。(它是为你的服务器上的最可疑的细节,也许你只配置一个DNS一个IPv4的地址,或者你也没ping6上的IPv6地址。如果它是一个公共服务器,那么它应该很可能终于听的IPv4也。这是显然,没有服务在IPv4 tcp端口80上侦听,也没有代理。)如果不是问题,那么我将描述“调试”策略:
...太好了,您检查了一些有用的特定事实,但是最有效的策略是尝试将一大堆可能的问题分成两半,以“ 平分 ”大小的区域,这些区域可以独立检查它们是否起作用以及如何起作用如果该区域中的任何内容损坏,将特别显示出来。
我将在访问日志 /var/log/httpd/access_log
(CentOS上的默认Apache日志)中查看Apache收到了一个请求,状态代码是什么,响应的大小为零或非零,并且Apache和浏览器之间一切正常。在开始怀疑防火墙等之前,首先通过来自同一服务器的一个请求轻松地测试服务器,例如通过命令行实用程序wget -S -O - http://mysite.example.com
或进行测试,这将更加有用curl -i http://mysite.example.com
。如果通过浏览器进行检查,则应使用开发人员工具“检查”(Ctrl + Shift + I),“网络”选项卡,查看问题是否仅与响应有关或仍与发送请求有关。
我最终还将验证从Python / Django进行的日志记录是否正常运行,以及您是否正在寻找正确的Python日志(例如,通过log.info("something")
在末尾添加命令)models.py
,不仅可以查看没有任何错误。
文本“我无法从浏览器访问服务器URL”需要更多信息,这正是它的确切含义。从字面上看,这意味着该问题与Django / Python无关,而是在Apache和浏览器之间,如果它确实无法开始连接并发送请求的标头。缺少响应需要首先考虑Django / Python。即使未配置的Apache也会显示测试页,并且可以通过ip地址进行访问,而无需使用有效的DNS:http; // numeric.ip.address。您可以验证可以在同一域上临时配置一个简单的测试静态站点。
编辑通过注释中的响应和建议以及问题中添加的格式化日志继续进行调试。逻辑过程比仅简历更重要。
1> hynekcer..:
首先,我将重点验证您是否可以访问Apache服务器上的某些静态测试页,因为它仅在IPv6端口上进行侦听。(它是为你的服务器上的最可疑的细节,也许你只配置一个DNS一个IPv4的地址,或者你也没ping6上的IPv6地址。如果它是一个公共服务器,那么它应该很可能终于听的IPv4也。这是显然,没有服务在IPv4 tcp端口80上侦听,也没有代理。)如果不是问题,那么我将描述“调试”策略:
...太好了,您检查了一些有用的特定事实,但是最有效的策略是尝试将一大堆可能的问题分成两半,以“ 平分 ”大小的区域,这些区域可以独立检查它们是否起作用以及如何起作用如果该区域中的任何内容损坏,将特别显示出来。
我将在访问日志 /var/log/httpd/access_log
(CentOS上的默认Apache日志)中查看Apache收到了一个请求,状态代码是什么,响应的大小为零或非零,并且Apache和浏览器之间一切正常。在开始怀疑防火墙等之前,首先通过来自同一服务器的一个请求轻松地测试服务器,例如通过命令行实用程序wget -S -O - http://mysite.example.com
或进行测试,这将更加有用curl -i http://mysite.example.com
。如果通过浏览器进行检查,则应使用开发人员工具“检查”(Ctrl + Shift + I),“网络”选项卡,查看问题是否仅与响应有关或仍与发送请求有关。
我最终还将验证从Python / Django进行的日志记录是否正常运行,以及您是否正在寻找正确的Python日志(例如,通过log.info("something")
在末尾添加命令)models.py
,不仅可以查看没有任何错误。
文本“我无法从浏览器访问服务器URL”需要更多信息,这正是它的确切含义。从字面上看,这意味着该问题与Django / Python无关,而是在Apache和浏览器之间,如果它确实无法开始连接并发送请求的标头。缺少响应需要首先考虑Django / Python。即使未配置的Apache也会显示测试页,并且可以通过ip地址进行访问,而无需使用有效的DNS:http; // numeric.ip.address。您可以验证可以在同一域上临时配置一个简单的测试静态站点。
编辑通过注释中的响应和建议以及问题中添加的格式化日志继续进行调试。逻辑过程比仅简历更重要。