Nginx 静态文件反向代理

本文探讨了Nginx反向代理配置中路径符号‘/’的重要性,并详细解析了如何处理静态文件访问中的404问题。文章提供了四种解决策略,包括统一上下文路径配置、指定第三方服务上下文路径、Nginx静态资源代理及统一静态资源代理目录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、反向代理之 / 的玄学
  • 代理路径后面加上 /

    http://www.rambo123.com/demo  访问 http://www.rambo123.com
    
    location /demo/ {
        # 注意后面加上反斜杠
        proxy_pass http://www.rambo123.com/;
    }
    
    http://www.rambo123.com/demo/user  代理到  http://www.rambo123.com/user
    
  • 代理路径后面不加 /

    http://www.rambo123.com/demo  访问 http://www.rambo123.com/demo
    
    location /demo/ {
        # 注意后面加上反斜杠
        proxy_pass http://www.rambo123.com;
    }
    
    http://www.rambo123.com/demo/user  代理到  http://www.rambo123.com/demo/user
    
二、反向代理之 “静态文件” 的处理
  • 在一般没有固定上下文路径的服务中,如果采用 Nginx 做反向代理,很容易出现 “静态资源” 访问 “404” 的问题

  • 解决 “静态资源” 访问 “404” 的问题一般可以考虑四个切面去处理

    • 切入点一:如果应用服务是自己开发的,可以考虑配置统一上下文路径

    • 切入点二:如果应用服务是第三方提供,我们可以考虑是否有配置文件指定上下文路径,比如 JenkinsJENKINS_ARGS="--prefix=/jenkins"

    • 切入点三:采用 Nginx 对静态资源再做进一步的代理

      # http://www.rambo123.com/demo/static/index.js  // 404
      # http://www.rambo123.com/demo/static/index.css  // 404
      
      location ~ /demo/.*\.(js|css)$ {
          proxy_pass http:www.rambo123.com;
          rewrite ^/demo/static/(.*)$ /static/$1 last;
      }
      
      # http://www.rambo123.com/demo/static/index.js => http:/www.rambo123.com/static/index.js
      
      # http://www.rambo123.com/demo/static/index.css => http://www.rambo123.com/static/index.css
      
    • 切入点四:采用 Nginx 对所有没有上下文路径匹配的静态资源都统一代理到指定目录去寻找(弊端就是,一个 Nginx 服务只能包含一个服务这样操作)

      # Knife4j 前端文件(通过Nginx代理的静态文件后缀,都去这里去找资源)
      location ~*^.+\.(icon|gif|jpg|jpeg|png|html|css|js|txt|xml|swf|wav)$ {
          root /data/java/kadmin/front;
      }
      
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值