近期專案需求,有一個百度上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:有什麼不對請在評論區留言,感謝!