背景 nodejs开发项目,前后端分离
前端项目域名与后端项目域名并非同一个
例如:前端运行在http://127.0.0.1:5000/login.html
后端项目运行在http://127.0.0.1:3000/api
Cookie
Cookie是不能跨域使用的,所以在前后端分离开发的时候,就会出现跨域问题,我们在保存登录状态时使用的cookie就无法使用了
解决办法:nginx反向代理
首先,什么是nginx的正向代理什么是反向代理?
1.正向代理
代理服务器是为用户服务,称之为正向代理
例如:访问谷歌,用户访问不了谷歌,但是我可以访问一台海外的服务器,这台服务器可以访问谷歌,那么用户就可以先访问‘海外的服务器’,再通过‘海外的服务器’访问谷歌,这就是正向代理
正向代理的用途:
1.访问原来无法访问的网络,如google
2.对客户端访问授权。上网进行认证等等
2.反向代理
反向代理是为服务器服务,称之为反向代理
反向代理的用途:
1.负载均衡,通过反向代理来优化服务器负载
2.前后端分离,统一请求地址
用户访问的都是代理服务器,代理服务器根据用户请求的路径来判断是访问前端服务器还是后端服务器。后服务器设置的cookie也会保存在代理服务器上,就解决了cookie跨域的问题。
nginx配置:
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://127.0.0.1:5000;
}
location /api {
proxy_pass http://127.0.0.1:3000;
#将cookie设置的地址改成了代理服务器的地址
proxy_set_header Host $host;
}
}