美文网首页
nginx反向代理解决跨域

nginx反向代理解决跨域

作者: coderfl | 来源:发表于2022-06-29 16:36 被阅读0次
location / {
  try_files $uri $uri/ /index.html;  #vue的history路由配置
}

#项目中的接口地址需是/app/开头,如:/app/manage/getList
location /app{  #项目中接口的统一开头
  proxy_pass https://jiekou.com/;  #接口真实服务器地址
}

注意

  • 1.proxy_pass的目标地址,默认不带/,表示只代理域名,url和参数部分不会变(把请求的path拼接到proxy_pass目标域名之后作为代理的URL)
  • 2.如果在目标地址后增加/,则表示把path中location匹配成功的部分剪切掉之后再拼接到proxy_pass目标地址
server {
        listen       80;
        server_name  localhost;
# proxy_pass  不以 / 结尾
location /system {           
        proxy_pass        http://127.0.0.1:8080;
        }
# proxy_pass  以 / 结尾
location /system {           
        proxy_pass        http://127.0.0.1:8080/;
        }
}

使用nginx 的rewrite 模块

  • rewrite是实现URL重写的关键指令,根据regex(正则表达式)部分内容,重定向到replacement,结尾是flag标记。
  rewrite    <regex>    <replacement>    [flag];
  
    关键字      正则        替代内容          flag标记
    关键字:其中关键字error_log不能改变
    正则:perl兼容正则表达式语句进行规则匹配
    替代内容:将正则匹配的内容替换成replacement
    flag标记:rewrite支持的flag标记
flag标记说明:
last  #本条规则匹配完成后,继续向下匹配新的location URI规则
break  #本条规则匹配完成即终止,不再匹配后面的任何规则
redirect  #返回302临时重定向,浏览器地址会显示跳转后的URL地址
permanent  #返回301永久重定向,浏览器地址栏会显示跳转后的URL地址

把到本服务的所有请求转发到www.summer.com
rewrite ^/(.*) http://www.summer.com/$1 break;

把到本服务器的所有请求路径中以/system开头的请求 替换成不带system的,例如http://192.168.25.132/system/sysMenu/tree ,匹配后地址变成 http://127.0.0.1:8080/sysMenu/tree
rewrite ^/system/(.*) /$1 break;
细节如下:

说明:                                        

rewrite为固定关键字,表示开始进行rewrite匹配规则

regex部分是 ^/(.*) ,这是一个正则表达式,匹配完整的域名和后面的路径地址

replacement部分是http://www.summer.com/$1   $1是取自regex部分()里的内容。匹配成功后跳转到的URL。

flag部分 break表示停止匹配,然后跳转到新的 http://www.summer.com/$1 地址上。


server {
        listen       80;
        server_name  localhost;

        location /system {           
        proxy_pass http://127.0.0.1:8080;
        rewrite ^/system/(.*) /$1 break;        
        }
    }

相关文章

网友评论

      本文标题:nginx反向代理解决跨域

      本文链接:https://www.haomeiwen.com/subject/jgnfbrtx.html