nginx代理解决前端跨域问题

背景

前后端分离是目前热门的开发方式,大部分互联网都会采用前后端分离的方式开发!后端提供接口给前端,如果前后端都不在同一个域下(请求地址和接口地址域名或端口不一致),那么就会出现跨域问题

如图所示:

 

 解决方案

  通过nginx正向代理和反向代理配置,将访问地址和请求接口地址保持一致就可以了

 

 

第一步:通过nginx 先正向代理接口地址(不理解正向代理的,自行查阅哈~)

  • ${host}:表示ip地址(自行替换)
  • ${port}:表示端口号(自行替换)
 server {
        listen    8111;
        location / {
		resolver ${host};       #指定DNS服务器IP地址 		
		proxy_pass http://${host}:${port};     #设定代理服务器的协议和地址 
		proxy_set_header HOST ${host};   
        }
}

通过以上的配置就可以将原本访问 :【http://www.a.com/{接口} 】替换成:【http://localhost:8111/{接口} 】

第二步:再通过nginx反向代理

server {
	listen 80;
	server_name localhost;
	location /{
		#填写页面发布后的路径 如:d:/xxx项目/dist/
		root d:/xxx项目/dist/;	
	}
	#反向代理
	location /api/{
		proxy_pass http://localhost:8111/;
	}
}

通过以上配置,访问【http://localhsot:80】 就可以访问我们的页面

通过反向代理也把刚刚的【http://localhost:8111/{接口} 】再一次替换成了【http://localhost:80/api/】

通过两步就完成了 IP和端口都一致了,再也不担心跨域问题了~~~

 

posted @ 2022-09-25 16:07  Alvin-fan  阅读(1013)  评论(0编辑  收藏  举报