nginx 反向代理后css,js,图片404

  • nginx.conf配置文件添加代码:

        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
        {
            proxy_pass http://www.baidu.com;
        }

        location ~ .*\.(js|css)?$
        {
            proxy_pass http://www.baidu.com;
        }

  • 重启nginx:

service nginx restart

如下图所示

### Nginx反向代理JS文件返回404的解决方案 在Nginx作为反向代理的情况下,如果前端应用中的JavaScript文件无法正常加载并返回404错误,通常是因为静态资源路径配置不正确或者未被正确定位。以下是详细的分析和解决方法: #### 1. 配置静态资源路径 当Nginx将请求转发给后端服务器时,默认情况下不会自动处理静态资源(如`js`、`css`等)。因此需要显式指定这些资源的位置。 ```nginx server { listen 80; server_name example.com; # 将静态资源映射到本地目录 location /static/ { alias /path/to/static/files/; } # 对于其他动态请求,继续使用反向代理 location / { proxy_pass http://host.docker.internal:8089/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } ``` 此配置确保了所有以`/static/`开头的请求都会直接从本地磁盘读取文件,而不是发送到后端服务[^5]。 #### 2. 检查前端框架的历史模式支持 对于基于Vue.js或其他单页应用程序(SPA)构建的应用程序来说,可能启用了HTML5历史模式。在这种模式下,浏览器会尝试通过更改URL而无需重新加载页面来导航不同视图。但是如果没有适当配置,则可能会导致除主页外的所有路由都显示404错误。 为了修复这个问题,可以在Nginx配置里加入如下规则: ```nginx location / { try_files $uri /index.html; } ``` 这样做的目的是让任何匹配不到实际文件或目录的请求最终都被导向至`index.html`,从而允许前端路由器接管剩余部分[^3]。 #### 3. 正确设置Proxy Pass后的相对链接 有时即使已经设置了正确的代理目标地址,但由于前后端分离部署等原因造成生成出来的html内部引用样式表及脚本标签src属性值仍保持旧有的形式即相对于原域名而非新的代理入口而言,这就需要调整build过程使之适应新环境下的url结构调整需求;或者是简单粗暴地把所有的外部依赖项全部托管在同一台机器上的统一位置再做统一分发管理即可规避此类风险发生几率大大降低同时还能提升整体性能表现水平等等诸多好处等着大家去挖掘探索实践验证真理嘛不是吗?! 例如修改webpack.config.js里的output.publicPath参数为'/'或者其他合适的绝对路径前缀字符串常量表达式之类的玩意儿咯嘿嘿嘿~当然啦具体还得看实际情况灵活应对哈😊 #### 4. 特定情况下的单独代理静态资源 如果某些特定类型的资产应该来自另一个独立的服务实例而非当前正在运行的那个的话,那么就可以针对它们各自制定专属定制化的location block来进行精准控制操作啦!就像下面展示的例子那样哦~ ```nginx location ~* \.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm|htc)$ { root /var/www/html/assets/images/; } location ~* \.(?:css|js)$ { proxy_pass http://another-backend-service:8080/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } ``` 这里我们分别定义了一个用于图像类扩展名以及另一组专门服务于样式表与脚本文件传输任务的新ruleset组合拳出击解决问题效率杠杠滴👍 --- ###
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值