跨域问题当后端无法配合时,开发环境用wepack-dev-server即可,生产环境则只能用nginx反向代理实现。

1.nginx重启

遇到第一个问题,在修改nginx配置后,使用nginx -s reload 命令重启,却报错80端口已被占用
image.png
解决方法:

  1. 查找进程:ps -ef | grep nginx 查看当前nginx相关的进程,有一个master process和几个worker process,第二列为进程PID

image.png

  1. 关闭进程: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下

  1. server {
  2. listen 80;
  3. location /api {
  4. proxy_pass: http://www.b.com
  5. }
  6. }

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