近期项目需求,有一个百度上ip获取的接口在打包上线后出现了跨域问题,一番犹豫还是选择用Nginx反向代理 毕竟大家都说是很成熟的解决方案。
关于正向代理和反向代理之类的就不说了,资料很多,可以参考:blog.csdn.net/zt157326258…
还是说怎么用nginx解决跨域吧
1.下载nginx 地址:nginx.org/en/download…
2.解压打开配置文件:nginx-1.14.2 ➡conf➡nginx.conf
listen 的端口可以随便填 但是要注意的是端口不能被占用,这个坑踩一脚浪费我半天时间。由于当时不知道本机的80端口被apache占用,并且nginx启动出错不会主动报错(需要自己查日志,位置:log文件夹的error.conf),导致启动nginx失败但是半天找不到原因。
如果日志中显示:[emerg] 9012#2384: bind() to 0.0.0.0:80 failed (10013: An attempt was made to access a socket in a way forbidden by its access permissions)即代表端口占用
需要打开命令行工具输入: netstat -ano 查看端口 然后打开管理器根据PID关掉该占用端口的程序就行了
3.启动nginx 启动文件里的nginx.exe即可,也可以命令行输入 'start nginx' 启动,启动以后会有一个终端闪一下,是正常现象, 然后打开 http://localhost:8065/ 有正常显示起始页就OK了, 跨域请求数据已经可以被使用啦!
nginx常用命令:
nginx -s reload 优雅重启,并重新载入配置文件nginx.conf
nginx -s quit 优雅停止nginx,有连接时会等连接请求完成再杀死worker进程
nginx -s reopen 重新打开日志文件,一般用于切割日志
nginx -v 查看版本
nginx -t 检查nginx的配置文件
nginx -h 查看帮助信息
nginx -c filename 指定配置文件
伸手党:
listen 8065;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root E:\\nginx ;
index demo.html demo.htm;
}
location /baiduIp{
rewrite ^/baiduIp/(.*)$ /$1 break;
proxy_pass http://api.map.baidu.com/location/ip;
}
ps:有什么不对请在评论区留言,感谢!