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

 

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配置引发的。

你可能感兴趣的:(nginx)