deepflow 发表于 2017-8-26 11:26:54

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

源站页面内容通过框架调用,<frame src="abc/123">,现在通过在反代服务器上安装证书的方式来反代该站点实现https访问。

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

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

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

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

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

suwubee 发表于 2017-8-26 11:27:58

没懂你啥意思,是frame里还有http?

suwubee 发表于 2017-8-26 11:28:48

location/abc/123
{
重新proxy 替换ssl,反代替换整个框架里的网页;
}

deepflow 发表于 2017-8-26 12:39:23

suwubee 发表于 2017-8-26 11:28
location/abc/123
{
重新proxy 替换ssl,反代替换整个框架里的网页;


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

location ab/123
{
proxy
}

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

{
    proxy_pass http://domain.com;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $remote_addr;
   
    expires 2d;
}

suwubee 发表于 2017-8-26 12:42:36

你试试看,可能要proxy_pass http://domain.com/abc/123;
但是一想也不对啊,如果都是这个域名,你又sub_filter了http,不应该还会出现http的,除非你sub_filter 开了on?

suwubee 发表于 2017-8-26 12:44:37

proxy里一定要插入proxy_set_header Accept-Encoding "";
如果你源站开启了gzip,替换是不生效的
页: [1]
查看完整版本: 请教 Nginx 反代页面含有frame框架问题