Nginx反向代理實現跨域

Finyu發表於2018-12-13

近期專案需求,有一個百度上ip獲取的介面在打包上線後出現了跨域問題,一番猶豫還是選擇用Nginx反向代理 畢竟大家都說是很成熟的解決方案。

關於正向代理和反向代理之類的就不說了,資料很多,可以參考:blog.csdn.net/zt157326258…

還是說怎麼用nginx解決跨域吧

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

Nginx反向代理實現跨域

2.解壓開啟配置檔案:nginx-1.14.2 ➡conf➡nginx.conf

Nginx反向代理實現跨域

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關掉該佔用埠的程式就行了

Nginx反向代理實現跨域

Nginx反向代理實現跨域
第一個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常用命令:

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

相關文章