前后端联调-Nginx转发请求

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zjuwwj/article/details/83099496

前言

前后端进行联调时,需要调用后端的接口,然而由于前后端是单独开发的,前端拿不到后端的代码,所以就通过nginx作了桥梁,进行请求转发。

跨域

跨域,是由浏览器的同源策略造成的,是浏览器对javascript施加的安全限制,使得浏览器不能执行其他网站的脚本。

同源

所谓同源是指:域名、协议、端口都相同。
解决跨域问题的方式有很多,比如:
1. jsonp 需要目标服务器配合一个callback函数
2. window.name+iframe 需要目标服务器响应window.name
3. window.location.hash+iframe 同样需要目标服务器作处理
4. html5postMessage+ifrme 这个也是需要目标服务器或者说是目标页面写一个postMessage,主要侧重于前端通讯
5. CORS 需要服务器设置header :Access-Control-Allow-Origin
6. nginx反向代理,可以不用目标服务器配合,不过需要你搭建一个中转nginx服务器,用于转发请求
一般当协议、端口不同的时候一般就会采用代理,这里主要讲一下Nginx代理的方式。

nginx配置

首先找到Nginx配置文件:

  • Windows下路径就是你安装的Nginx目录,比如我的放在D盘根目录,那就是:d:\nginx\conf\nginx.conf
  • Mac系统配置文件路径在: /usr/local/etc/nginx/nginx.conf, Finder下通过Shift+Command+G,输入/usr/local/etc/nginx/进入该目录
server {
        listen       8088;//监听端口8088
        server_name  127.0.0.1;
        location / {
        	client_body_buffer_size 128k;
        	client_max_body_size    2000m;
        	proxy_connect_timeout   60;
        	proxy_send_timeout      86400;
        	proxy_read_timeout      86400;
        	proxy_pass   http://127.0.0.1:8080/;//前端项目启动的端口
        	proxy_redirect default;
        }
        location /api {
        	client_body_buffer_size 128k;
        	client_max_body_size    2000m;
        	proxy_connect_timeout   60;
        	proxy_send_timeout      86400;
        	proxy_read_timeout      86400;
        	proxy_redirect off ;
        	proxy_set_header Host $host;
        	proxy_set_header X-Real-IP $remote_addr;
        	proxy_set_header REMOTE-HOST $remote_addr;
        	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        	proxy_pass   http://192.168.91.109:9090/api/test;//监听8088端口,请求会被转发到9090
       }
}

上面配置的意思是:监听8088端口(Nginx默认启动80端口),将http://127.0.0.1/api下的所有请求服务转发到http://192.168.91.109:9090/api/test

常用命令

打开安装目录,比如我的放在D盘根目录,那就是:d:\nginx,会发现有个nginx.exe文件

start nginx.exe //windows下启动nginx,也可以直接双击nginx.exe,但是这样的话如果修改了配置文件,则没有办法重新加载nginx

nginx.exe -s reload //windows下重启nginx

nginx.exe -s stop //windows下停止nginx

猜你喜欢

转载自blog.csdn.net/zjuwwj/article/details/83099496