跨域问题当后端无法配合时,开发环境用wepack-dev-server即可,生产环境则只能用nginx反向代理实现。
1.nginx重启
遇到第一个问题,在修改nginx配置后,使用nginx -s reload
命令重启,却报错80端口已被占用
解决方法:
- 查找进程:
ps -ef | grep nginx
查看当前nginx相关的进程,有一个master process和几个worker process,第二列为进程PID
- 关闭进程:
kill -9 [PID]
将这几个process都kill掉后,即为nginx关闭,web服务器随之关闭,网页则不可访问了
此时再重启nginx就可以了
2.修改配置
前端项目在www.a.com,前端要访问的接口在www.b.com
前端需要往本域名下请求,接口是 www.a.com/api/getData
nginx配置中修改如下,即以本站的api开头的请求,都转发到www.b.com下
server {
listen 80;
location /api {
proxy_pass: http://www.b.com
}
}
3.无法访问www.b.com
修改配置后发现,如果不配置代理,请求www.a.com/api/getData,变成请求www.a.com,获取到的是html代码,即本站界面的前端代码;
配置后变成请求一直pending,然后报504 Bad Gateway;
后面 curl www.b.com/api/getData
发现并不能在服务器上正常访问,因为前端是部署在阿里云ECS机器上,而www.b.com是公司内网,经过IT授权去访问了另一个外网IP