2025年3月15日 星期六 甲辰(龙)年 月十四 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 服务器 > Nginx

Nginx 用proxy_pass做反向代理返回400错误

时间:03-31来源:作者:点击数:30

问题背景

前端web项目,经常会遇到跨域访问的问题,利用Nginx的proxy_pass可以很轻松的配置反向代理,解决这个问题。

假设资源服务器是asset-server,用以下配置,可以把asset-server/app 挂载到 server/app

  • location ^~ /app {
  • proxy_pass http://asset-server;
  • }

这样能解决大部分的问题,但是当路径包含特殊字符,例如空格等,需要进行转义urlencode时,就回遇到问题。

解决方法

需要对uri进行重写:

  • location ^~ /app {
  • rewrite ^ $request_uri; # get original URI
  • rewrite ^/app/(.*) app/$1 break; # drop /foo, put /bar
  • return 400; # if the second rewrite won't match
  • proxy_pass http://asset-server/$uri;
  • }

特别注意

如果有多层代理,每一层都需要rewrite。

参考

  • location /api/ {
  • rewrite ^ $request_uri;
  • rewrite ^/api/(.*) $1 break;
  • return 400;
  • proxy_pass http://127.0.0.1:82/$uri;
  • }
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门