Nginx反向代理实现跨域

2,573 阅读2分钟

近期项目需求,有一个百度上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关掉该占用端口的程序就行了

第一个localtion下 设置的是项目的根目录和起始页 不多说了 第二个是跨域设置,大致意思就是会匹配请求地址中的'/bond'字段并用设置的proxy_pass属性值替换 注意:修改配置项以后nginx需要reload才会启用新的设置 (这里是错误的 有关location属性的相关信息可以参考https://www.cnblogs.com/luxianghao/p/6807081.html)

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:有什么不对请在评论区留言,感谢!