隨著瀏覽器安全策略的愈發(fā)嚴(yán)格, https和http的混合站點(diǎn), 會出現(xiàn)各種無法展示的問題,本文即提供一種解決此問題的思路,使用Nginx&Apache反向代理來解決https站點(diǎn)無法展示http內(nèi)容問題
首先我們要改變有問題的鏈接, 例如我們的站點(diǎn)是 https://www.aaa.com, 頁面需要展示http://www.bbb.com/video.mp4,
我們可以把鏈接轉(zhuǎn)換成如下形態(tài):
https://www.aaa.com/www.bbb.com/video.mp4
這樣我們就可以使用Nginx和Apache的rewrite功能,去攔截以一個域名為開始路徑的鏈接, 然后獲取對應(yīng)文件內(nèi)容,這樣的好處是鏈接的后綴名可以保持不變,在safari和iphone上也能正常使用, 單純的服務(wù)端獲取轉(zhuǎn)發(fā), 音視頻在蘋果系統(tǒng)上是無法使用的
下面來說下具體反向代理的配置
Nginx
location ~*^/[a-zA-Z0-9]+(\.[a-zA-Z0-9]+)+/(.*) {
proxy_force_ranges on;
proxy_pass http:/$request_uri;
}
需要在nginx配置文件的http模塊添加如下配置:
resolver 8.8.8.8;
Apache
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([a-zA-Z0-9]+(\.[a-zA-Z0-9]+)+)/(.*)$ http://$0 [P,L]
</IfModule>
需要開啟如下模塊:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
以上就是使用Nginx&Apache反向代理來解決https站點(diǎn)無法展示http內(nèi)容問題的方法, 其余有什么更好的方法的話, 也可以留言或私信交流