专栏首页技术向nextcloud-onlyoffice-反向代理https错误排查

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

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

背景

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

树莓派:反向代理

蜗牛星际:nextcloud

淘汰笔记本:onlyoffice

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

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

排查与解决

F12查看控制台,发现错误

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文件

<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请求。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 仅需这一篇,妥妥的吃透 “ 负载均衡 ”

    我们都对高可用有一个基本的认识,其中负载均衡是高可用的核心工作。本文将通过如下几个方面,让你妥妥的吃透“”负载均衡”。

    java思维导图
  • docker swarm笔记

    docker 1.12以前,需要自己使用swarm镜像启动环境,这里整理一下。如果你已经是1.12+了,请直接跳到第4节。

    pollyduan
  • The Linux Scheduler: a Decade of Wasted Cores 译文 一

    ​ 作为资源管理的核心部分,OS的线程调度器必须保持下面这样简单,不变的特性: 确保ready状态的线程总是被调度到有效的CPU核上。虽然它看起来是...

    扫帚的影子
  • 12306的架构到底有多牛逼?

    尤其是春节期间,大家不仅使用 12306,还会考虑“智行”和其他的抢票软件,全国上下几亿人在这段时间都在抢票。

    暴走大数据
  • Nginx的负载均衡

    我们都知道,Nginx支持负载均衡,可以很方便的帮助我们进行水平扩容,然而它究竟是依据什么原则进行请求的分发,其中又有哪些负载均衡算法可供选择和配置,今天就让我...

    健程之道
  • Zookeeper基本功能和应用场景

    Zookeeper是一个开源的分布式的,为分布式应用提供协调服务的Apache项目。是大数据Hadoop生态体系中用的非常广泛的基础组件

    用户1212940
  • 近期面试Java后端的一些感悟

    高并发编程、分布式框架、Spring等常用框架可以说是现在Java后端求职的必备技能。

    Java团长
  • “12306”是如何支撑百万QPS的?

    https://juejin.im/post/5d84e21f6fb9a06ac8248149

    互扯程序
  • “12306”的架构到底有多牛逼?

    尤其是春节期间,大家不仅使用 12306,还会考虑“智行”和其他的抢票软件,全国上下几亿人在这段时间都在抢票。

    纯洁的微笑
  • 千万级 高并发 “秒杀” 架构设计(含源码)

    每到节假日期间,一二线城市返乡、外出游玩的人们几乎都面临着一个问题:抢火车票!虽然现在大多数情况下都能订到票,但是放票瞬间即无票的场景,相信大家都深有体会。尤其...

    搜云库技术团队

扫码关注云+社区

领取腾讯云代金券