前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >nextcloud-onlyoffice-反向代理https错误排查

nextcloud-onlyoffice-反向代理https错误排查

作者头像
羽翰尘
修改2019-11-26 16:26:45
3.2K0
修改2019-11-26 16:26:45
举报
文章被收录于专栏:技术向技术向

本文由腾讯云+社区自动同步,原文地址 https://stackoverflow.club/article/reverse_proxy_https_debug/

背景

使用三台机器搭建nextcloud + onlyoffice:

树莓派:反向代理

蜗牛星际:nextcloud

淘汰笔记本:onlyoffice

三台笔记本之间使用openV**连接在一起,协议是http;树莓派对外提供https访问能力。

nextcloud https访问没有问题,但是在nextcloud中点击文档跳转后出现Requests to the server have been blocked by an extension.

排查与解决

F12查看控制台,发现错误

代码语言:javascript
复制
Refused to frame 'http://onlyoffice.stackoverflow.club/' because it violates the following Content Security Policy directive: "frame-src https://onlyoffice.stackoverflow.club/".

该错误似乎是因为在https iframe中访问http资源引起的,接着查到请求者为onlyoffice的api.js。看上去似乎是onlyoffice内部的api.js不够智能,不能自动从http转到https.

Onlyoffice - requests to the server have been blocked by an extension处看到对反向代理实现https onlyoffice的conf文件添加了一些headers;在使用 Docker 搭建 Onlyoffice 如此轻松愉快中对nginx的设置出也出现了X-Forwarded-Proto.

随后,在自己的配置文件中添加该header,问题解决。下面是完整的apache2 conf文件

代码语言:javascript
复制
<IfModule mod_ssl.c>
<VirtualHost *:443>
       
        ServerName onlyoffice.stackoverflow.club
        ServerAdmin wenfengand@gmail.com
        ProxyPass / http://10.8.0.6/
        ProxyPassReverse / http://10.8.0.6/
       
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
      
        LogFormat "%h\",\"%{User-agent}i\",\"%r\",\"%>s\",\"%B" apacheguilogholder
        CustomLog "|\"/usr/bin/java\" -jar \"/home/ubuntu/download/ApacheGUI/tomcat/bin/LogParser.jar\" \"/home/ubuntu/download/ApacheGUI/tomcat\"" apacheguilogholder
RequestHeader set X-Forwarded-Proto "https"
SSLCertificateFile /home/pi/workspace/onlyoffice.stackoverflow.club/fullchain.pem
SSLCertificateKeyFile /home/pi/workspace/onlyoffice.stackoverflow.club/privkey.pem
Include /home/pi/workspace/onlyoffice.stackoverflow.club/options-ssl-apache.conf
</VirtualHost>
</IfModule>

其他命令

  • 查看apache2已经加载的模块1apachectl -t -D DUMP_MODULES

原理

X-Forwarded-Proto (XFP) 是一个事实上的标准首部,用来确定客户端与代理服务器或者负载均衡服务器之间的连接所采用的传输协议(HTTP 或 HTTPS)。在服务器的访问日志中记录的是负载均衡服务器与服务器之间的连接所使用的传输协议,而非客户端与负载均衡服务器之间所使用的协议。为了确定客户端与负载均衡服务器之间所使用的协议, X-Forwarded-Proto 就派上了用场。

猜测api.js根据这个头部信息确定发出http请求还是https请求。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-07-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 排查与解决
  • 其他命令
  • 原理
相关产品与服务
负载均衡
负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档