全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

CeraNetworks网络延迟测速工具IP归属甄别会员请立即修改密码
查看: 2000|回复: 5

请教 Nginx 反代页面含有frame框架问题

[复制链接]
发表于 2017-8-26 11:26:54 | 显示全部楼层 |阅读模式
源站页面内容通过框架调用,
  1. <frame src="abc/123">
复制代码
,现在通过在反代服务器上安装证书的方式来反代该站点实现https访问。

虽然用的是相对路径,但是在Chrome浏览器下显示的最终路径还是http的,所以就被默认屏蔽页面空白。

利用nginx的sub_filter 的替换功能,把
  1. "abc/123"
复制代码
替换成
  1. "$host/abc/123"
复制代码
这样的形式,再查看反代页面源代码时发现已经替换成功,框架路径是https了。

但是在Chrome下仍然被屏蔽,控制台里的错误信息显示框架仍然是http的。

因为没有源站权限,无法修改源站代码,只能在反代上想办法。

求大佬现身指点一下,谢谢。

发表于 2017-8-26 11:27:58 | 显示全部楼层
没懂你啥意思,是frame里还有http?
发表于 2017-8-26 11:28:48 | 显示全部楼层
location  /abc/123
{
重新proxy 替换ssl,反代替换整个框架里的网页;
}
 楼主| 发表于 2017-8-26 12:39:23 | 显示全部楼层
suwubee 发表于 2017-8-26 11:28
location  /abc/123
{
重新proxy 替换ssl,反代替换整个框架里的网页;

感谢大佬指点,是http源站里面只有frame框架。

  1. location ab/123
  2. {
  3. proxy
  4. }
复制代码


容器里的代码和location / 里的一样吗,是不是也这样就可以:

  1. {
  2.     proxy_pass http://domain.com;
  3.     proxy_set_header Host $host;
  4.     proxy_set_header X-Forwarded-For $remote_addr;
  5.    
  6.     expires 2d;
  7. }
复制代码
发表于 2017-8-26 12:42:36 | 显示全部楼层
你试试看,可能要proxy_pass http://domain.com/abc/123;
但是一想也不对啊,如果都是这个域名,你又sub_filter了http,不应该还会出现http的,除非你sub_filter 开了on?
发表于 2017-8-26 12:44:37 | 显示全部楼层
proxy里一定要插入proxy_set_header Accept-Encoding "";
如果你源站开启了gzip,替换是不生效的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2024-4-20 03:29 , Processed in 0.059115 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表