服务端代理
现在我们升级为Nginx代理来解决跨域问题,方式是通过对接口路径前缀进行匹配来实现。约定API服务中所有的接口路径以api
开头,WEB服务在请求API服务时不用指向API域名,而是指向自身域名https://web.keysou.com
,然后在Nginx中对WEB域下以api
开头的路径进行代理,转发到API服务。配置如下:
server { listen 443; server_name web.keysou.com; ... # SSL、日志等其他配置 location / { proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://localhost:8080; # 走WEB服务 } location /api/ { proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://localhost:8081;# 以api开头的接口转发到API服务 } }
这样对于前段来说,所有接口都是走的WEB服务的域名,由服务器来对不同服务的接口进行分发,那么前台也就不存在跨域问题了。