nginx部署,可以访问首页index,但是不能直接访问其他路径

问题

nginx部署前端项目,
访问网站首页没问题,即网站根目录“https://xxxxxx.com”,
直接访问其他目录时“https://xxxxxx.com/example”,报404(就是nginx找不到相应的 example.html 文件)。

原因

因为 example.html 这个文件全名是带有后缀".html"的,而“/example”只会让nginx去直接寻找文件名是example(没有后缀)的文件,当然是找不到的。

解决方法

解决方法,个人觉得有两种,推荐第二种

(1)直接url访问全名,比如 “localhost:8080/example.html”,这样就能找到对应子文件;
(2)在nginx.conf配置文件中,加入以下代码(try_files)(见下方解决方案)

更改nginx配置文件。

location / {
        root   html;
        index  index.html index.htm;
}

替换为:

location / {
        root   html;
        index  index.html index.htm;
        
        try_files $uri $uri/ /index.html;
}

再次访问。问题解决。

补充:try_files说明(重点

例子:根据上面的配置,当请求 http://localhost:3004/api 时,$uri/api。当前try_file 具体为:/api/api//index.html,其中 / 表示根目录(根据 root 或 alias 来指定)

  • 首先:
    检查 data 目录中是否存在 api 文件,
    如果存在,则返回文件;
    如果不存在,则进行下一步。
  • 其次:
    检查 data 目录中是否存在 api/ 目录,
    如果存在,则在检查 api/ 目录中是否存在 index.html 或者 index.htm 文件(由 index 指定);
    如果存在,则返回该文件;
    如果不存在,则进行下一步。
  • 最后:
    检查 data 目录中是否存在 index.html 文件。
    如果存在,则返回文件;
    如果不存在,则返回 404

注意

如果你的网址是https格式的,
那么需要加到监听443端口的location /里。
如果不是,加到80端口。


参考自: 

nginx部署,可以访问首页,但是不能直接访问其他路径_nginx反向代理只能访问首页_不会秃头的博客-CSDN博客

nginx只能访问首页index,访问其他页面是404_JSluck的博客-CSDN博客

 Nginx的try_files指令详解 - 简书 (jianshu.com)

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: nginx作为一个高性能的HTTP服务器,可以用来部署静态资源站点。根据提供的信息来看,nginx部署的静态资源站点可以访问json文件,但不能访问图片资源。 首先,我们需要确保图片资源的路径是正确的,并且这些图片资源存在于nginx配置的静态资源目录下。例如,如果图片资源的路径是`/images/logo.png`,那么这个图片文件应该存在于nginx的静态资源目录下的`images`文件夹内。 另外,我们还需要确认nginx的配置文件中是否正确地处理了图片资源的请求。在nginx的配置文件中,通常会使用`location`指令来匹配不同的请求,并将这些请求转发给适当的处理程序。如果我们希望nginx能够正确地处理图片资源的请求,那么配置文件中应该包含类似以下的配置: ``` location /images { root /path/to/static/resource/directory; } ``` 这样,当nginx接收到以`/images`开头的请求时,它会将请求转发给指定的静态资源目录。在上面的例子中,“`/path/to/static/resource/directory`”应该替换为实际的静态资源目录路径。 另外一个可能导致不能访问图片资源的原因是权限问题。在确保图片资源存在于正确的路径后,我们还需要确保nginx对这些资源具有读取权限。可以使用`ls -l`命令查看资源的权限设置,并通过`chmod`命令修改权限。 综上所述,要解决nginx部署的静态资源站点无法访问图片资源的问题,我们需要确保图片资源存在于正确的路径,并且nginx的配置文件正确地处理了这些资源的请求。同时,还要确保nginx对这些资源具有读取权限。如果这些步骤都正确执行,就应该能够成功地访问图片资源了。 ### 回答2: nginx部署的静态资源站点可以访问json文件,但是访问不了图片资源的问题可能出现在配置的地方。首先,我们需要确定nginx的配置文件中是否正确配置了图片资源的访问。在nginx的配置文件中,通常会配置静态资源的存放路径以及访问规则。 假设静态资源存放在"/var/www/static"目录下,我们需要在nginx的配置文件中添加如下配置: ``` server { listen 80; server_name example.com; location / { root /var/www/static; index index.html; } location ~* \.(json)$ { root /var/www/static; index index.html; } location ~* \.(png|jpg|jpeg|gif)$ { root /var/www/static; index index.html; } } ``` 以上配置中,我们使用了"location"指令来配置不同类型文件的访问规则。第一个"location"块用于配置根路径下的访问规则,指定了根目录为"/var/www/static",以及默认的索引文件为"index.html"。第二个"location"块用于配置json文件的访问规则,同样指定了根目录和索引文件。第三个"location"块用于配置图片资源的访问规则,也指定了根目录和索引文件。 如果还是无法访问图片资源,可能是因为文件路径或名称有误。可以检查一下图片资源文件的存放路径是否和配置文件中的路径一致,以及文件名是否拼写正确。 需要注意的是,在以上配置中,如果json文件和图片资源在同一目录下,可以去掉第二个"location"块,只保留第一个和第三个"location"块即可。此外,如果部署的是HTTPS站点,需要更改监听端口和配置HTTPS相关的参数。 总之,通过正确配置nginx访问规则,静态资源站点就可以同时访问json文件和图片资源了。 ### 回答3: nginx部署的静态资源站点可以通过配置文件将json文件配置为可访问的文件类型,但是对于图片资源需要额外进行一些配置。 首先,确保在nginx配置文件中将json文件设置为可访问文件类型。可以在http或者server部分的location块中添加如下配置: ``` location / { #... #配置可访问的文件类型 types { application/json json; } } ``` 这样就可以访问站点下的json文件了。 而对于图片资源,由于图片资源通常比较大且频繁被访问,为了提高效率,我们需要进行缓存和压缩。在nginx配置文件中添加如下配置: ``` location ~* \.(gif|jpg|jpeg|png)$ { #启用gzip压缩 gzip_static on; #设置缓存时间为30天 expires 30d; #配置缓存选项 add_header Cache-Control "public"; } ``` 这样配置后,可以访问站点下的图片资源,并且启用了gzip压缩和缓存,提高了访问速度和性能。 总结:nginx部署的静态资源站点可以访问json文件,只需要在配置文件中将json文件配置为可访问的文件类型。对于图片资源,需要额外进行缓存和压缩的配置,以提高访问速度和性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值