前端開發調試之代理配置


前端開發往往需要在本地調試環境和線上環境之間靈活切換,以將要調試的一個頁面為例,頁面引用了如下的靜態資源,要想在本地開發調試下面引入的js代碼,最直接的方法是在把引入的資源路徑改成本地調試路徑,並起一個本地服務器訪問頁面,使用這種方法最大的缺點就是上線前需要恢復原來的引入路徑,再或者我們沒有權限修改頁面代碼,上述方法也無法使用。因此代理的方式才是首選。

<script type="text/javascript" src="//q.qunarzz.com/flight_tejia/prd/scripts/app.js"></script>

Mac上常用兩種代理工具:Nginx和Charles,下面介紹這兩種工具的配置方法。

配置Nginx代理

第一步:配置host使請求打到本地

127.0.0.1 q.qunarzz.com

為了方便配置host,推薦使用SwitchHosts軟件



第二步:配置nginx
nginx基本命令

sudo nginx #第一次啟動nginx
sudo nginx -s reload #重新啟動nginx
sudo nginx -s stop  #關閉nginx

以支持https請求為例,瀏覽器或者模擬器訪問頁面https://q.qunarzz.com:443/xxxxx,域名解析host生效—>127.0.0.1:443/xxxx,使用nginx的proxy_pass代理到本地端口如3000因此會將請求打到本地服務,對於的nginx配置如下,對於https需要安裝證書文件,可以參考如何為nginx配置https(免費證書)

server{
    listen  80;
    listen  443 ssl;
    #監聽的域名
    server_name qunarzz.com q.qunarzz.com my.qunar.com mobileqzz.beta.qunar.com;
    expires -1;
​
    ssl_certificate      /usr/local/etc/nginx/cert/xxx.crt;
    ssl_certificate_key  /usr/local/etc/nginx/cert/xxxx.key;
​
    ssl_session_cache    shared:SSL:1m;
    ssl_session_timeout  5m;
​
    ssl_ciphers  HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers  on;
​
    location ~ /(flight_tejia)/ {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header   Host $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
    }
}

配置Charles代理

個人喜歡使用Charles代理,圖形化的界面便於發現代理錯誤和集中管理常用代理,上面的代理也可以使用Charles配置,而且不需要單獨配置host。
第一步:開啟Charles的SSL proxy
開啟Charles,點擊頂部菜單欄的Proxy--SSL Proxying Settings,打開設置頁面。點擊add按鈕,可以對制定的Host和Port進行SSL Proxy,如果想對所有的Host進行SSL代理,在Host輸入框里填*,在Port框里填443,這樣可以代理所有域名或ip。最后點擊Enable SSL Proxying,生效設置。



第二步:終端連代理,安裝Charles的證書
保證終端和電腦在同一個局域網內,比如手機和電腦都連同一個熱點,或者電腦開共享熱點,手機連這個熱點。模擬器就不需要了。在手機的WLAN設置里,選擇熱點-修改網絡或者高級設置-代理-手動,輸入電腦的局域網IP,端口號是8888。這個8888是Charles的默認端口號。連接成功后,在手機瀏覽器里輸入http://charlesproxy.com/getssl,點回車。會自動下載彈窗提示安裝charles的ssl證書,安裝即可。



補充說明在手機或者模擬器上要設置信任證書,設置->通用->關於手機-> 證書信任設置
第三步:通過Map Remote實現https轉http
手機連上Charles的代理,發送網絡請求。第一次連Charles發請求時,Charles會彈窗提示是否允許該終端發網絡請求,一定要點是!。可以看到即使是https,也可以明文展示。以q.qunarzz.com為例,找到q.qunarzz.com的請求項,右擊,點擊Map Remote, 將https://q.qunarzz.com 映射到 http://q.qunar.com,重新發請求即可。

最后還有一點需要注意,由於瀏覽器的安全策略,如果使用瀏覽器打開,可能會有如下錯誤,只需要繼續前往,然后刷新頁面就好了。
d8a2ac3b-f2b3-4e37-82aa-a4537ecf3db0


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM