Nginx反向代理實現跨域

近期項目需求,有一個百度上ip獲取的接口在打包上線後出現了跨域問題,一番猶豫仍是選擇用Nginx反向代理 畢竟你們都說是很成熟的解決方案。html

關於正向代理和反向代理之類的就不說了,資料不少,能夠參考:blog.csdn.net/zt157326258…nginx

仍是說怎麼用nginx解決跨域吧apache

1.下載nginx 地址:nginx.org/en/download…api

2.解壓打開配置文件:nginx-1.14.2 ➡conf➡nginx.conf跨域

listen 的端口能夠隨便填 可是要注意的是端口不能被佔用,這個坑踩一腳浪費我半天時間。因爲當時不知道本機的80端口被apache佔用,而且nginx啓動出錯不會主動報錯(須要本身查日誌,位置:log文件夾的error.conf),致使啓動nginx失敗可是半天找不到緣由。socket

若是日誌中顯示:[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關掉該佔用端口的程序就好了ui

第一個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了, 跨域請求數據已經能夠被使用啦!spa

nginx經常使用命令:.net

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:有什麼不對請在評論區留言,感謝!

相關文章
相關標籤/搜索