Nginx 代理Nexus 页面静态元素(图片)404!

日常踩坑记录。

如果你也遇到了可以尝试修改下看能否改善你的问题。


nginx 旧配置  
  # Nexus maven 私有仓库
        location  /nexus {
            proxy_pass http://192.168.128.168:89/nexus;

        }

访问页面

 虽然不影响使用,但是logo 小图标你都不显示,看着不舒服。解决它


经过面向百度谷歌后,排查发现应该还是nginx配置的问题。

具体是,出于nginx的路由路径 /nexus/ 在路由匹配成功之后还会继续往下寻找匹配规则(在上面的配置中找不到)以及在路径中末尾【/】的原因,静态资源的请求地址无法被nginx有效识别,直接导致反向代理失败了,所有的二级地址都没有被代理成功。

解决方法则是修改路由路径的匹配规则(加上往下匹配的通配符   ^~   即可):

  # Nexus Maven 私有仓库
        location ^~ /nexus {
            proxy_pass http://192.168.128.168:89/nexus;

        }
#因为就自家开发同学使用,其余访问头之类设置就没有设置了。

访问效果:


附ChatGPT的解释:

location ^~ /nexuslocation /nexus 的区别在于匹配规则。

location ^~ /nexus 的匹配规则是前缀匹配,即以 /nexus 开头的 URI 都会被匹配到。

location /nexus 的匹配规则是通用匹配,会匹配所有以 /nexus 结尾的 URI,包括以 /nexus 结尾的 URI。

如果您使用了 location /nexus,可能会发生这种情况:

当请求 http://example.com/nexus/ 时,Nginx 会将该请求转发到 http://192.168.128.168:89/nexus/

但是,当浏览器请求该页面中的静态资源时,浏览器会将请求发送到 http://example.com/nexus/resource.png,而不是 http://example.com/nexus/nexus/resource.png

这就导致了404错误。

而使用 location ^~ /nexus,可以确保所有以 /nexus 开头的请求都被正确地转发到了Nexus服务器,包括静态资源的请求。因此,这可能是您遇到的问题的解决方案之一。

需要注意的是,使用 location ^~ /nexus 的时候,如果您在Nexus服务器上有一个子目录,例如 http://192.168.128.168:89/nexus/app/,并且该目录下有一个文件 resource.png,则该文件应该使用 http://example.com/nexus/app/resource.png 来访问,而不是 http://example.com/nexus/resource.png。因为 location ^~ /nexus 仅匹配以 /nexus 开头的请求,而不匹配 /nexus 后面的其他内容。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值