我如何设置 OpenLiteSpeed 以反向代理到内部网络上的 Nextcloud?
令人惊讶的是,在 Habré 上搜索 OpenLiteSpeed 没有任何结果! 我赶快纠正这种不公平,因为 LSWS 是一个不错的网络服务器。 我喜欢它的速度和精美的 Web 管理界面:
尽管 OpenLiteSpeed 最著名的是 WordPress“加速器”,但在今天的文章中,我将展示它的一个相当具体的用法。 即请求的反向代理(reverse proxy)。 你说这个用nginx比较普遍? 我会同意的。 但这让我们爱上了 LSWS!
代理是可以的,但是在哪里? 同样出色的服务 - Nextcloud。 我们使用 Nextcloud 来创建私有的“文件共享云”。 对于每个客户端,我们使用 Nextcloud 分配一个单独的 VM,我们不想将它们暴露在“外部”。 相反,我们通过一个通用的反向代理代理请求。 该解决方案允许:
1) 从 Internet 上删除存储客户端数据的服务器,并且
2)保存IP地址。
该图如下所示:
很明显,该方案被简化了,因为Web 服务基础结构的组织不是今天文章的主题。
同样在这篇文章中,我将省略 nextcloud 的安装和基本配置,特别是因为 Habré 有关于这个主题的资料。 但我肯定会展示设置,否则 Nextcloud 将无法在代理后面工作。
给定:
Nextcloud 安装在主机 1 上并配置为通过 http(无 SSL)工作,只有一个本地网络接口和一个“灰色”IP 地址 172.16.22.110。
让我们在主机 2 上配置 OpenLiteSpeed。它有两个接口,外部(查看 Internet)和内部,网络上的 IP 地址为 172.16.22.0/24
主机2的对外接口IP地址为DNS名称cloud.connect.link
问题:
通过链接从 Internet 获取 '
- 在 Ubuntu 18.04.2 上安装 OpenLiteSpeed。
让我们添加一个存储库:
wget -O
http://rpms.litespeedtech.com/debian/enable_lst_debain_repo.sh |须藤庆典
sudo易于得到更新
安装,运行:
sudo apt-get 安装 openlitespeed
sudo /usr/local/lsws/bin/lswsctrl 开始
- 最小的防火墙设置。
须藤 ufw 允许 ssh
sudo ufw 默认允许传出
sudo ufw 默认拒绝传入
sudo ufw允许http
sudo ufw 允许 https
sudo ufw 允许来自 你的管理主机 到任何端口 7080
sudo ufw启用 - 将 OpenLiteSpeed 设置为反向代理。
让我们在虚拟主机下创建目录。cd /usr/本地/lsws/
sudo mkdirc cloud.connect.link
cd cloud.connect.link/
sudo mkdir {conf,html,日志}
须藤 chown lsadm:lsadm ./conf/
让我们从 LSWS Web 界面配置虚拟主机。
打开url管理
默认登录名/密码:admin/123456
添加虚拟主机(虚拟主机 > 添加)。
添加时会出现错误信息——配置文件丢失。 这是正常的,点击Click to create解决。
在 General 选项卡中,指定 Document Root(虽然不需要,但没有它配置将不会启动)。 域名(如果未指定)将从我们命名为域名的虚拟主机名中获取。
现在是时候记住我们不仅有一个网络服务器,还有一个反向代理。 以下设置将告诉 LSWS 要代理的内容和位置。 在虚拟主机设置中,打开外部应用程序选项卡并添加 Web 服务器类型的新应用程序:
指定名称和地址。 您可以指定一个任意名称,但您需要记住它,它将在接下来的步骤中派上用场。 该地址是 Nextcloud 在内部网络中所在的地址:
在相同的虚拟主机设置中,打开上下文选项卡并创建代理类型的新上下文:
指定参数:URI = /,Web 服务器 = nextcloud_1(上一步的名称)
重新启动 LSWS。 这是通过从 Web 界面单击一次完成的,奇迹! (遗传性小鼠携带者对我说话)
- 我们放证书,配置https。
获得证书的程序 我们将省略它,同意我们已经拥有它并将密钥放在 /etc/letsencrypt/live/cloud.connect.link 目录中。
让我们创建一个“监听器”(Listeners > Add),我们称它为“https”。 将它指向端口 443 并注意它将是安全的:
在 SSL 选项卡中,指定密钥和证书的路径:
“侦听器”已创建,现在在虚拟主机映射部分中,我们将向其添加虚拟主机:
如果 LSWS 只代理一个服务,则可以完成配置。 但是我们打算用它根据域名向不同的“实例”发送请求。 所有域都有自己的证书。 因此,您需要转到虚拟主机配置并在 SSL 选项卡中再次指定其密钥和证书。 将来,应该为每个新的虚拟主机都这样做。
仍然需要配置 url 重写,以便将 http 请求发送到 https。
(顺便说一句,这什么时候结束?是时候让浏览器和其他软件默认转到 https,并在必要时手动转发到 no-SSL)。
打开启用重写并写入重写规则:
重写条件 %{SERVER_PORT} 80
重写规则 ^(.*)$https://%{SERVER_NAME}%{REQUEST_URI } [R=301,L]
由于一个奇怪的误解,无法通过通常的优雅重启来应用重写规则。 因此,我们将不优雅地重启LSWS,而是粗暴高效地重启:
sudo systemctl 重新启动 lsws.service
为了让服务器监听端口 80,让我们创建另一个监听器。 我们称它为 http,指定第 80 个端口并且它将是非安全的:
类比 https 侦听器设置,让我们将虚拟主机附加到它。
现在 LSWS 将监听 80 端口并从它向 443 发送请求,重写 url。
总之,我建议降低 LSWS 日志记录级别,默认设置为调试。 在这种模式下,原木以闪电般的速度繁殖! 对于大多数情况,警告级别就足够了。 转到服务器配置 > 日志:
这样就完成了 OpenLiteSpeed 作为反向代理的配置。 再次重启 LSWS,点击链接
为了让 Nextcloud 让我们进入,我们需要将 cloud.connect.link 域添加到受信任列表中。 让我们去编辑 config.php。 我在安装 Ubuntu 时自动安装了 Nextcloud,配置位于此处:/var/snap/nextcloud/current/nextcloud/config。
将“cloud.connect.link”参数添加到 trusted_domains 键:
'trusted_domains' =>
数组(
0 =>'172.16.22.110',
1 => 'cloud.connect.link',
),
此外,在相同的配置中,您必须指定我们代理的 IP 地址。 我提请您注意地址必须指定为 Nextcloud 服务器可见的地址,即本地 LSWS 接口的 IP。 如果没有这一步,Nextcloud Web 界面可以工作,但应用程序未获得授权。
'trusted_proxies' =>
数组(
0 =>'172.16.22.100',
),
很好,之后我们就可以进入授权界面了:
问题解决了! 现在每个客户端都可以在自己的个人 url 上安全地使用“文件云”,带有文件的服务器与 Internet 分离,未来的客户端将收到相同的所有内容,不会影响任何一个额外的 IP 地址。
此外,您可以使用反向代理来传送静态内容,但对于 Nextcloud,这不会显着提高速度。 所以它是可选的和可选的。
我很高兴分享这个故事,我希望它对某人有用。 如果您知道更优雅有效的解决问题的方法,我将不胜感激!
来源: habr.com