IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    [原]Nginx 访问静态资源报错404 Not Found 的问题解决过程

    mchdba发表于 2016-11-23 19:15:57
    love 0

     

     

    1、静态资源访问报错404:

    [nginx@dev_121_21 tmp]$ wget http://bsstatic.powerlong.com/commonStatic/css/merchant_patch.css

    --2016-11-22 18:18:28--  http://bsstatic.powerlong.com/commonStatic/css/merchant_patch.css

    正在解析主机 bsstatic.powerlong.com... 192.168.121.91

    正在连接 bsstatic.powerlong.com|192.168.121.91|:80... 已连接。

    已发出 HTTP 请求,正在等待回应... 404 Not Found

    2016-11-22 18:18:28 错误 404:Not Found。

     

    [nginx@dev_121_21 tmp]$

     

    telnet端口是OK的

    [root@dev_121_21 ~]# telnet bsstatic.powerlong.com 80

    Trying 192.168.121.91...

    Connected to bsstatic.powerlong.com.

    Escape character is '^]'.

     

     

     

     

    2、查看iptables状态,有多余的output记录

    [root@dev_121_21 ~]# service iptables status

    表格:nat

    Chain PREROUTING (policy ACCEPT)

    num  target     prot opt source               destination        

    1    REDIRECT   tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:80 redir ports 8081

     

    Chain POSTROUTING (policy ACCEPT)

    num  target     prot opt source               destination        

     

    Chain OUTPUT (policy ACCEPT)

    num  target     prot opt source               destination        

    1    REDIRECT   tcp  --  0.0.0.0/0            127.0.0.1           tcp dpt:80 redir ports 8081

    2    REDIRECT   tcp  --  0.0.0.0/0            127.0.0.1           tcp dpt:80 redir ports 8081

    3    REDIRECT   tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:80 redir ports 8081

     

    [root@dev_121_21 ~]#

     

     

     

    3、删除配置文件,多余的2条OUTPUT记录,保持一条配置记录,如下所示

    [root@dev_121_21 ~]# vim /etc/sysconfig/iptables

     

    # Generated by iptables-save v1.4.7 on Tue Nov 22 12:34:48 2016

    *nat

    :PREROUTING ACCEPT [22:1583]

    :POSTROUTING ACCEPT [6:326]

    :OUTPUT ACCEPT [6:326]

    -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8081

    -A OUTPUT -d 127.0.0.1/32 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8081

    COMMIT

    # Completed on Tue Nov 22 12:34:48 2016

     

     

     

    4、然后重启iptables服务

    重启iptables服务

    [root@dev_121_21 ~]# service iptables restart

    iptables:清除防火墙规则:                                 [确定]

    iptables:将链设置为政策 ACCEPT:filter nat                [确定]

    iptables:正在卸载模块:                                   [确定]

    iptables:应用防火墙规则:                                 [确定]

    [root@dev_121_21 ~]#

     

     

    然后查看iptables状态,只有一条REDIRECT记录存在:

    [root@dev_121_21 ~]# service iptables status

    表格:nat

    Chain PREROUTING (policy ACCEPT)

    num  target     prot opt source               destination        

    1    REDIRECT   tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:80 redir ports 8081

     

    Chain POSTROUTING (policy ACCEPT)

    num  target     prot opt source               destination        

     

    Chain OUTPUT (policy ACCEPT)

    num  target     prot opt source               destination        

    1    REDIRECT   tcp  --  0.0.0.0/0            127.0.0.1           tcp dpt:80 redir ports 8081

     

    [root@dev_121_21 ~]#

     

     

     

     

    5、再尝试下,wget下载,可以wget成功了

    [root@dev_121_21 ~]#  wget http://bsstatic.powerlong.com/commonStatic/css/merchant_patch.css

    --2016-11-22 18:27:52--  http://bsstatic.powerlong.com/commonStatic/css/merchant_patch.css

    正在解析主机 bsstatic.powerlong.com... 192.168.121.91

    正在连接 bsstatic.powerlong.com|192.168.121.91|:80... 已连接。

    已发出 HTTP 请求,正在等待回应... 200 OK

    长度:18298 (18K) [text/css]

    正在保存至: “merchant_patch.css”

     

    100%[====================================================================================================================================================================================================================================>] 18,298      --.-K/s   in 0s     

     

    2016-11-22 18:27:52 (77.6 MB/s) - 已保存 “merchant_patch.css” [18298/18298])

     

     

    总结:telnet能进nginx的80端口,但是HTTP请求访问拒绝,而nginx服务正常启动的情况下,一般就要查看下iptables端口转发,90%的问题都是因为iptables配置引发的。



沪ICP备19023445号-2号
友情链接