Nginx 报404问题,如何解决

近日在部署项目时,出现了一些问题,如图

正常的登录界面是可以访问的,但是在登录之后访问之后的地址会报404错误,于是去查看是否配置有错误,但是查看之后发现,nginx.confconfig.js两个配置文件的ip和端口都是没有错误的

这个项目部署过好多次,没有出现过这样的错误。

这是原版没动过的解压缩后的nginx.conf的源文件

 

圈起来的地方是应该按照项目配置对应的ip和监听的端口

listen对应的是端口,server_name对应的是访问的ip

但是发现当我去修改为实际ip和端口还是不能解决问题,经过查阅官方文档,了解到我们需要添加如下的一句话:

try_files $uri $uri/ /index.html;

记住,$uri是两个啊!!!!即$uri $uri(两个$uri之间有空格)!

这句话的作用是嘛呢?

用官方解释就是:

Checks the existence of files in the specified order and uses the first found file for request processing; the processing is performed in the current context. The path to a file is constructed from the file parameter according to the root and alias directives. It is possible to check directory’s existence by specifying a slash at the end of a name, e.g. “$uri/”. If none of the files were found, an internal redirect to the uri specified in the last parameter is made. 

简单的翻译一下大致意思,差不多相当于高考报志愿这么个意思,从一志愿一直找到最后一个志愿,如果其中有满足要求的,那恭喜你考上了,找到最后一个都没有,那不好意思,清华落榜生就是你了!

用在Nginx中就是项目在加载的时候找文件用的,按照你给的文件顺序,一个一个的找,要是找到了就显示,找不到就显示404(文件路径丢失错误)。

添加的位置应当在这里:

server下的location段里添加,此时再重新启动nginx就可以了

nginx.exe所在的目录内,点击地址栏,输入cmd,可直接在该目录下启动命令行,无需打开cmd后再跳转目录。

若之前没有关闭nginx服务,先停止再打开,如果已关闭,可以直接输入启动服务的命令

停止nginx服务命令

nginx -s stop

 启动nginx服务命令

start nginx

热部署nignx服务命令

(但是不推荐使用这个命令,这个命令有时候是不起作用的,不如直接停了再启动)

nginx -s reload

重新启动nginx后,浏览器最好是清除缓存后再进行测试

可以直接在浏览器窗口按

Ctrl+Shift+Del

可直接打开清除缓存的对话框

重新测试,可以正常访问了

第一次写经验分享贴,如有不足之处,请大家提出 

### 原因分析 Nginx 返回 404 错误通常意味着客户端尝试访问的页面或资源未找到。此问题可能是由多种因素引起的,包括但不限于配置文件中的路径设置不正确、权限不足、符号链接处理不当以及实际文件确实不存在等问题[^2]。 对于 Nginx 配置中缺失重定向跳转的情况,如果用户试图通过反向代理访问特定网页而该网页并未被适当地映射至对应的物理位置,则会触发此类错误[^5]。 ### 解决方法 #### 检查并修正配置文件 确保 `location` 块内的指令能够匹配到正确的静态文件路径或是动态脚本处理器(如 PHP)。例如,在处理 HTML 或其他类型的静态内容时: ```nginx server { ... location /static/ { alias /var/www/html/static/; } } ``` 而对于 FastCGI 请求来说,应该确认 PHP-FPM 的 socket 地址无误,并且指定了正确的索引页: ```nginx location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.4-fpm.sock; # 确认版本号与实际情况相符 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } ``` #### 审核权限设定 验证 Web 根目录及其子目录下的所有文件都具有适当读取权限给运行 Nginx 进程的身份。可以使用如下命令查看当前用户的权限情况: ```bash ls -l /path/to/webroot/ ``` 必要时调整相应权限位以允许正常访问这些资源: ```bash chmod -R 755 /path/to/webroot/ chown -R www-data:www-data /path/to/webroot/ ``` > 注意:这里假设 Linux 发行版下默认使用的 web server 用户名为 `www-data`;不同环境需替换为对应的服务账户名称。 #### 排除符号链接障碍 当存在软连接指向外部存储或其他分区上的数据源时,务必保证 Nginx 对其拥有足够的执行权能去解析这类特殊文件结构。可以通过编辑主配置文件加入下面选项来放宽限制条件: ```nginx server { ... disable_symlinks off; } ``` 不过出于安全考虑,默认情况下建议保持严格模式 (`if_not_owner`) 并仅针对个别站点开启宽松策略。 #### 确定目标文件是否存在 最后一步也是最基础的一环——直接前往服务器本地查找指定 URI 所应关联的具体文档实体是否真的存在于预期的位置上。借助于 SSH 登录远程主机后可利用简单的 shell 工具完成这项工作: ```bash find /path/to/document/root -name "index.html" ``` 一旦发现任何异常之处即刻着手修复直至恢复正常服务为止。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

劉汉卿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值