Nginx&Apache反向代理解决https站点无法展示http内容问题

随着浏览器安全策略的愈发严格, https和http的混合站点, 会出现各种无法展示的问题,本文即提供一种解决此问题的思路,使用Nginx&Apache反向代理来解决https站点无法展示http内容问题

首先我们要改变有问题的链接, 例如我们的站点是 https://www.aaa.com, 页面需要展示http://www.bbb.com/video.mp4,
我们可以把链接转换成如下形态:

https://www.aaa.com/www.bbb.com/video.mp4

这样我们就可以使用Nginx和Apache的rewrite功能,去拦截以一个域名为开始路径的链接, 然后获取对应文件内容,这样的好处是链接的后缀名可以保持不变,在safari和iphone上也能正常使用, 单纯的服务端获取转发, 音视频在苹果系统上是无法使用的

下面来说下具体反向代理的配置

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

 
  RewriteEngine on
  RewriteBase /
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^([a-zA-Z0-9]+(\.[a-zA-Z0-9]+)+)/(.*)$ http://$0 [P,L]
 

需要开启如下模块:

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站点无法展示http内容问题的方法, 其余有什么更好的方法的话, 也可以留言或私信交流

你可能感兴趣的:(Nginx&Apache反向代理解决https站点无法展示http内容问题)