回覆列表
-
1 # 雲渺書齋
-
2 # ShuangLiu07
主流瀏覽器在絕大多數情況下都不可能,雖然可以透過反代理強行把主域名http轉換為https,但頁面裡如果引用了http資源或者連結等一樣無法正常載入。
一個相對簡單的情況是,目標網站沒有複雜的cookie操作且全部用主域名相對路勁,倒是可以用反代理解決。
其他的情況就複雜了,理論上透過反代理替換頁面內容,把所有第三方域名和外鏈的http都強行更換,非常麻煩,也不是通用的方法,但確實可以實現。
哦…對了,複雜的網站還得考慮cookie的域名替換,甚至還有js中的url變數…
所以… 最好不要折騰…
解決辦法:預設Nginx是不支援https的正向代理的,建議使用Nginx反向代理,將https代理成http頁面的url地址。
nginx.config配置
server {
listen 443 ssl;
server_name proxy.example.com;
ssl on;
#證書位置
ssl_certificate /data/server.crt; # 路徑為證書生成的路徑
ssl_certificate_key /data/privkey.key; # 路徑為證書生成的路徑
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
#協議配置
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://www.123.com;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
}
}