美文网首页互联网技术
使用nginx 的反向代理解决跨域问题

使用nginx 的反向代理解决跨域问题

作者: 我是刘贵成 | 来源:发表于2020-09-23 11:43 被阅读0次

我们在实际开发项目的时候,经常会拆分项目或多个项目组合使用,那么就会出现跨域请求。

那什么是跨域请求?

在 HTML 中,<a>,<form>,<img>,<script>,<iframe>,<link>等标签以及 Ajax 都可以指向一个资源地址,而所谓的跨域请求就是指:当前发起请求的域与该请求指向的资源所在的域不一样。这里的域指的是这样的一个概念:我们认为若协议 + 域名 + 端口号均相同,那么就是同域。

​  举个例子:假如一个域名为aaa.cn的网站,它发起一个资源路径为aaa.cn/books/getBookInfo的 Ajax 请求,那么这个请求是同域的,因为资源路径的协议、域名以及端口号与当前域一致(例子中协议名默认为http,端口号默认为80)。但是,如果发起一个资源路径为bbb.com/pay/purchase的 Ajax 请求,那么这个请求就是跨域请求,因为域不一致,与此同时由于安全问题,这种请求会受到同源策略限制。

跨域请求的安全问题

​ 通常,浏览器会对上面提到的跨域请求作出限制。浏览器之所以要对跨域请求作出限制,是出于安全方面的考虑,因为跨域请求有可能被不法分子利用来发动 CSRF攻击。详细请看这篇:浅谈CSRF攻击方式

那么本文重点是介绍如果使用nginx 的反向代理解决跨域问题。

nginx 是什么、怎么安装,请自行百度。

先上代码:

server{

        listen 8889;

        server_name localhost;

        location / {

            index index.html index.htm index.php;

            root  D:\\lgc\\docker-images\\nginx\\data\\html\\images\\terpc;

        }

        location ^~/terminal/ {

            include  uwsgi_params;

            proxy_pass  http://192.168.1.45:9103/;

        }

        location ^~/res/ {

        proxy_pass  http://192.168.1.45:9103;

        }

        access_log  D:\\software\\nginx-1.10.3\\logs\\terpc.log;

    }

重点看这部分:

首先配置了一个默认路径,指向静态页面的路径。然后配置一个反向代理,以“terminal”开头的请求会转发到“http://192.168.1.45:9103/”下,举个例子:

访问: http://192.168.1.45:8889/terminal/index.html ----实际指向跳转-->    http://192.168.1.45:9103/index.html  

上面配置注意一点:如果你配置的路径是 “ http://192.168.1.45:9103” 少了“/”,实际是指向的是“ http://192.168.1.45:9103/terminal/index.html ”

如何解决指向路径的静态资源访问404问题?

增加一个配置:

location ^~/res/ {

        proxy_pass  http://192.168.1.45:9103;

}

这个配置的意思是,http://192.168.1.45:8889/res  ----> 开头的就指向 http://192.168.1.45:9103/res

相关文章

网友评论

    本文标题:使用nginx 的反向代理解决跨域问题

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