nginx根据路径配置反向代理


  今天,测试 一个后台接口,写了个html,在其中使用jquery发送请求给后台,chrome91竟然报错说跨域给error了!那岂不是以后本机页面不能和后端愉快的玩耍了?

  于是,配置起了nginx+反向代理的方式,旨在迂回对抗chrome的新安全机制。

目标地址:http://127.0.0.1:8006/publish/template/modifyInterPublish

配置如下:

 1 server {  2     listen       80;  3  server_name localhost;  4 
 5     location / {  6  root html;  7  index index.html index.htm;  8         if ($request_filename ~* ^.*?\.(txt|doc|pdf|rar|gz|zip|docx|exe|xlsx|ppt|pptx|jar|war)$) {  9             add_header Content-Disposition 'attachment'; 10  } 11  } 12 
13     location /proxy { 14         proxy_pass http://127.0.0.1:8006;
15  index index.html; 16  } 17     
18 }

结果:怎么也访问不到!

原来只差一个“/”!

即:

1 location /proxy { 2     proxy_pass http://127.0.0.1:8006;
3  index index.html; 4 }

改为:

1 location /proxy { 2     proxy_pass http://127.0.0.1:8006/;
3  index index.html; 4 }

原来proxy_pass匹配路径后加杠代理后将去掉已匹配的路径,不加杠则保留已匹配的路径。

请求网址:http://127.0.0.1:8006/publish/template/modifyInterPublish

使用 proxy_pass http://127.0.0.1:8006; 代理后的网址为:http://127.0.0.1:8006/proxy/publish/template/modifyInterPublish

使用 proxy_pass http://127.0.0.1:8006/; 代理后的网址为:http://127.0.0.1:8006/publish/template/modifyInterPublish

而location匹配的路径后有没有杠无所谓,即

location /proxy  和 location /proxy/  匹配的结果没有区别。

最后再上正确的配置:

 1 server {  2     listen       80;  3  server_name localhost;  4 
 5     location / {  6  root html;  7  index index.html index.htm;  8         if ($request_filename ~* ^.*?\.(txt|doc|pdf|rar|gz|zip|docx|exe|xlsx|ppt|pptx|jar|war)$) {  9             add_header Content-Disposition 'attachment'; 10  } 11  } 12 
13     location /proxy { 14         proxy_pass http://127.0.0.1:8006/;
15  index index.html; 16  } 17     
18 }

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM