nginx访问不到

今天,一朋友的一台linux服务器上部署了nginx,但是外部(公网)就是不能访问,于是协助其排查。整体思路如下:

1、确认nginx配置是否ok。

2、确认网络是否可达。

3、是否受防火墙安全控制等。

4、排除以上原因之后,远程实际再测试。

那么开始排查:

1、确认nginx配置是否ok。

1.1、检查nginx的配置。

发现有报错

2013/11/13 15:35:09 [emerg] 7739#0: bind() to 0.0.0.0:80 failed (98: Address already in use)

netstat -lanp|grep 80

原来有httpd进程(apache),关闭之

1.2本机是否可以访问(公网ip)

本机curl http://12x.xx.x.xx/ 发现是ok的,日志正常打印(access.log有滚动)

2、确认网络是否可达

telnet 12x.xx.x.xx 80

Trying 12x.xx.x.xx...

Connected to 12x.xx.x.xx.

Escape character is '^]'.

这样就说明网络上可达,并且TCP三次握手可以完成,因为能telnet通,排除了网络不通的情况

3、是否受防火墙安全控制等。

将iptables和selinux关闭

以下4条命令清除iptables的配置

iptables -F

iptables -F -t nat

iptables -X

iptables -X -t nat

setenforce 0 #关闭selinux

4、远程访问再次确认和推论

4.1远程使用浏览器访问,不能访问。。。

4.2服务器日志没有滚动

4.3基于4.1和4.2,结论是请求没有到nginx,但是根据,2、网络是可达的。

似乎矛盾出来了:网络可达,但是80端口的请求就确实没有到nginx。。实际上,网络的可达,或者说telnet能痛,只说明TCP三次握手是ok的,但是流量器不能访问,说明http数据传输受影响。所以,初步判断,是给服务器之前的“某个网络设备”过滤了。

4.4telnet 之后,直接输入GET /,发现页面能传输回来,但是输入了GET / HTTP/1.1就会被卡死,无任何数据反馈。于是就比较怀疑是服务器之前的“某个网络设备”过滤了(专门过滤http数据)。

5、我们修改了nginx的监听的端口为8080,发现访问正常了:无论是浏览器还是telnet之后输入GET / HTTP/1.1都ok

和网络工程师聊了。一般运营商不会过滤80端口的(就算没有icp,一般也不会封)

【结论】:应该还是在应用层上出问题了,服务器之前的“某个网络设备”过滤了

经验教训:

1、排查网站不能访问故障基本思路:内到外一层一层测试,并且要测试网络是否可达,为了便于解决问题,最好将服务器的selinux防火墙关闭。

2、在我大中华地区,icp备案还是得加上。

nginx访问不到的更多相关文章

  1. Nginx 访问日志轮询切割

    Nginx 访问日志轮询切割脚本 #!/bin/sh Dateformat=`date +%Y%m%d` Basedir="/application/nginx" Nginxlog ...

  2. 按日期切割nginx访问日志--及性能优化

    先谈下我们需求,一个比较大的nginx访问日志,根据访问日期切割日志,保存在/tmp目录下. 测试机器为腾讯云机子,单核1G内存.测试日志大小80M. 不使用多线程版: #!/usr/bin/env ...

  3. 一、基于hadoop的nginx访问日志分析---解析日志篇

    前一阵子,搭建了ELK日志分析平台,用着挺爽的,再也不用给开发拉各种日志,节省了很多时间. 这篇博文是介绍用python代码实现日志分析的,用MRJob实现hadoop上的mapreduce,可以直接 ...

  4. Python正则表达式,统计分析nginx访问日志

    目标: 1.正则表达式 2.oop编程,统计nginx访问日志中不同IP地址出现的次数并排序 1.正则表达式 #!/usr/bin/env python # -*- coding: utf-8 -*- ...

  5. Nginx访问控制模块

    一.Nginx访问控制模块 Nginx默认安装的模块http_access_module,可以基于来源IP进行访问控制. 1.模块安装 nginx中内置ngx_http_access_module,除 ...

  6. logstash收集nginx访问日志

    logstash收集nginx访问日志 安装nginx #直接yum安装: [root@elk-node1 ~]# yum install nginx -y 官方文档:http://nginx.org ...

  7. 使用python找出nginx访问日志中访问次数最多的10个ip排序生成网页

    使用python找出nginx访问日志中访问次数最多的10个ip排序生成网页 方法1:linux下使用awk命令 # cat access1.log | awk '{print $1" &q ...

  8. Nginx 访问日志配置

    一.Nginx 访问日志介绍 Nginx 软件会把每个用户访问网站的日志信息记录到指定的日志文件里,供网站提供者分析用户的浏览行为等,此功能由 ngx_http_log_module 模块负责. 二. ...

  9. Nginx访问日志、 Nginx日志切割、静态文件不记录日志和过期时间

    1.Nginx访问日志 配制访问日志:默认定义格式: log_format combined_realip '$remote_addr $http_x_forwarded_for [$time_loc ...

随机推荐

  1. gitlab-ci + k8s 之docker (三)

    docker 在本系列(一)中(https://www.cnblogs.com/huandada/p/9965771.html)的runner_tomcat.sh脚本有涉及到镜像的推送,本文主要记录整 ...

  2. linux的基本操作(NFS服务配置)

    服务配置 [什么是NFS] NFS会经常用到,用于在网络上共享存储.这样讲,你对NFS可能不太了解,笔者不妨举一个例子来说明一下NFS是用来做什么的.假如有三台机器A.B.C,它们需要访问同一个目录, ...

  3. js获取当前日期方法(YYYY-MM-DD格式)

      var myDate = new Date(); var time = myDate.toLocaleDateString().split('/').join('-');将1970/08/08转化 ...

  4. 浅析 Hinton 最近提出的 Capsule 计划

    [原文]    浅析 Hinton 最近提出的 Capsule 计划     关于最新的 Hinton 的论文 Dynamic Routing Between Capsules,参见 https:// ...

  5. CSS div 高度满屏

    方法一: 通过JQuery,获取窗体的高度,设置给对应的div.代码如下 ht = $(document.body).height(); $(); 缺点:由于浏览器是先解析css,后执行JS,导致页面 ...

  6. MySQL数据库导出

    因为业务需要,把MySQL查询的数据导出成csv文件,操作在Navicat中完成. 首选用SELECT语句查询数据,然后Navicat的导出,然后选csv,选路径,再加上首栏就可以了

  7. Parallel.ForEach 多线程 声明失败 "未将对象引用设置到对象的实例"

    x using System; using System.Collections.Generic; namespace Parallel.ForEach { class Program { //代码结 ...

  8. Git忽略提交规则 - .gitignore配置运维总结

    在使用Git的过程中,我们喜欢有的文件比如日志,临时文件,编译的中间文件等不要提交到代码仓库,这时就要设置相应的忽略规则,来忽略这些文件的提交.简单来说一个场景:在你使用git add .的时候,遇到 ...

  9. java JFR

    1. 参数: -XX:+UnlockCommercialFeatures -XX:+FlightRecorder 2. 运行命令: jcmd <PID> JFR.start name=te ...

  10. ffmpeg命令的使用

    参考博客:https://www.cnblogs.com/wainiwann/p/4128154.html 但是红色网页总结的 “ffmpeg 用法” 非常全面. http://www.360doc. ...