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

### 浏览器 404 Not Found 错误原因及解决方案 #### 原因分析 404 Not Found 是一种常见的 HTTP 状态码,表示客户端尝试访问资源未找到。具体原因可能涉及多个方面: - **URL 配置错误**:当 URL 地址拼写有误或指向不存在的页面时,服务器无法定位对应的资源[^1]。 - **Web 应用程序配置不当**:例如 Nginx 安装后更改默认端口号可能导致浏览器无法正确解析请求路径,从而引发 404 错误。 - **HTTP 到 HTTPS 重定向设置不正确**:如果服务器未能适当地处理从 HTTP 至 HTTPS 的转换过程,可能会导致原本应被重定向至安全连接上的请求返回 404 错误响应[^2]。 - **虚拟主机配置问题**:多站点托管环境下,若各域名对应目录映射关系设定失误也会造成此类状况发生。 - **开发工具环境下的文件位置异常**:像 WebStorm 这样的集成开发环境中,HTML 文件放置于桌面而非项目结构内同样能触发此现象[^4]。 - **服务器内部故障或其他因素影响服务稳定性**:如 IIS 重启前后性能差异显著以及 FTP 访问速率骤降等问题均暗示着潜在的服务中断风险存在[^5]。 #### 解决方案建议 针对上述提到的各种可能性,可采取如下措施予以排查和修复: 对于 Linux 上运行的 Nginx 实例而言,确认其监听端口变更后的防火墙规则允许外部访问新指定端口,并验证 site-available 和 sites-enabled 中有关 server_name 及 root 参数定义无误;另外还需确保 location 指令能够匹配预期 URI 模式。 ```bash sudo ufw allow <new_port>/tcp ``` 检查 webserver 是否已经设置了恰当的永久 (301) 或临时 (302) 跳转指令用于指导来访者由 http://example.com 自动转向 https://www.example.com 形式的地址,同时注意避免循环跳转陷阱的发生。 审查 Apache/Nginx 等软件包里关于 name-based virtual hosting 的部分文档资料,调整 DocumentRoot 属性使之准确反映实际存储静态网页的位置信息。 最后但并非最次要的是,保持良好的编码习惯——始终把源代码置于版本控制系统之下并按照约定俗成的方式组织项目架构有助于减少由于随意散乱存放而导致意外丢失重要组件的风险事件概率上升趋势。 定期监控服务器健康状态指标变化曲线图谱,及时发现并排除任何妨碍正常运作的因素干扰项,必要情况下考虑升级硬件设施或者优化现有资源配置策略以满足日益增长的数据交换需求量级要求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值