OpenLiteSpeed内部和外部的Nextcloud:配置反向代理

如何在内部网络上的Nextcloud中将OpenLiteSpeed配置为反向代理?


令人惊讶的是,在Habré上搜索OpenLiteSpeed不会产生任何结果! 我急于纠正这种不公正,因为LSWS是值得使用的Web服务器。 我爱他的速度和时尚的Web管理界面:


图片


尽管OpenLiteSpeed作为WordPress的“加速器”而闻名,但在今天的文章中,我将展示其相当具体的应用程序。 即反向代理请求(反向代理)。 您说为此使用nginx更常见吗? 我会同意的。 但是爱LSWS确实伤害了我们!


代理好,但是在哪里? 同样出色的服务是Nextcloud。 我们使用Nextcloud来创建私有的“文件共享云”。 对于每个客户端,我们使用Nextcloud分配一个单独的VM,并且不想“暴露”它们。 相反,我们通过通用的反向代理来代理请求。 该解决方案使您能够:


  1. 从Internet上删除存储客户端数据的服务器,然后
  2. 保存IP地址。

该方案如下所示:


图片


显然,该方案得到了简化,因为 组织Web服务基础结构不是本文的主题。


同样在本文中,我将省略非claudaud的安装和基本配置,尤其是因为在Habré上有专门针对此主题的材料。 但是我一定会显示设置,没有这些设置,Nextcloud将无法用于代理。


给定:Nextcloud安装在主机1上,并配置为通过http(无SSL)工作,它只有一个本地网络接口和一个“灰色” IP地址172.16.22.110。


我们将在主机2上配置OpenLiteSpeed。它有两个接口,一个是外部接口(在Internet上查看),另一个是内部接口,其网络上的IP地址为172.16.22.0/24。


DNS名称cloud.connect.link指向主机2外部接口的IP地址


任务:通过链接“ https://cloud.connect.link ”(SSL)从Internet到达内部网络上的Nextcloud。


  • 在Ubuntu 18.04.2。上安装OpenLiteSpeed

添加存储库:


wget -O- http: //rpms.litespeedtech.com/debian/enable_lst_debain_repo.sh | sudo bash
sudo apt-get更新

设置,运行:


sudo apt-get install openlitespeed
sudo / usr / local / lsws / bin / lswsctrl开始

  • 最小化防火墙。
    须藤UFW允许SSH
    sudo ufw默认允许传出
    sudo ufw默认拒绝传入
    sudo ufw允许http
    须藤ufw允许https
    sudo ufw允许从管理主机到任何端口7080
    sudo ufw启用
  • 将OpenLiteSpeed设置为反向代理。
    为virtualhost创建目录。
    cd / usr /本地/ lsws /
    须藤mkdirc cloud.connect.link
    cd cloud.connect.link/
    sudo mkdir {conf,html,logs}
    sudo chown lsadm:lsadm ./conf/

从LSWS Web界面配置虚拟主机。
开启网址管理http://cloud.connect.link:7080
默认登录名/密码:admin / 123456


图片


添加虚拟主机(“虚拟主机”>“添加”)。


添加时,将出现错误消息-没有配置文件。 这是正常现象,可通过单击“单击以创建”来解决。


图片


在“常规”选项卡中,指定“文档根目录”(尽管不需要它,但没有它,配置将不会生效)。 域名(如果未指定)将从虚拟主机名中获取,我们将其命名为域名。


图片


现在是时候记住我们不仅有一个Web服务器,而且还有一个反向代理。 以下设置将告诉LSWS代理什么以及在哪里代理。 在虚拟主机的设置中,打开“外部应用程序”选项卡并添加新的应用程序,例如Web服务器:


图片


注明姓名和地址。 可以任意指定名称,但是必须记住它,在后续步骤中很有用。 该地址是Nextcloud驻留在内部网络上的位置:


图片


在虚拟主机的相同设置中,打开“上下文”选项卡并创建“代理”类型的新上下文:


图片


指定参数:URI = /,Web服务器= nextcloud_1(上一步的名称)


图片


重新启动LSWS。 只需单击一下Web界面,即可完成奇迹! (世袭鼠标载体在对我说话)


图片


图片


  • 我们放入证书,配置https。
    我们将省略获取证书过程 ,同意我们已经拥有该证书 ,并使用/etc/letsencrypt/live/cloud.connect.link目录中的密钥。

创建一个“侦听器”(侦听器>添加),将其命名为“ https”。 我们将其指向端口443,并注意它将是安全的:


图片


在“ SSL”选项卡中,指定密钥和证书的路径:


图片


已经创建了一个“侦听器”,现在在“虚拟主机映射”部分中,将虚拟主机添加到其中:


图片


如果LSWS仅代理一项服务,则可以完成配置。 但是我们计划使用它根据域名将请求传输到不同的“机构”。 并且所有域都将拥有自己的证书。 因此,您需要转到virtualhost配置,然后再次在SSL选项卡中指定其密钥和证书。 将来,必须为每个新的虚拟主机执行此操作。


图片


仍然需要配置url重写,以便将HTTP请求发送到https。


(顺便说一句,什么时候结束?默认情况下浏览器和其他软件应该转到https,并在必要时手动进行no-SSL转发)。
启用启用重写并编写重写规则:


RewriteCond%{SERVER_PORT} 80
RewriteRule ^(。*)$ Https://%{SERVER_NAME}%{REQUEST_URI } [R = 301,L]

图片


由于发生奇怪的误解,因此无法在通常的正常重启过程中应用重写规则。 因此,重新启动LSWS并不好,但是粗鲁而有效:


sudo systemctl重新启动lsws.service

使服务器侦听第80个端口,然后创建另一个侦听器。 让我们将其命名为http,指定第80个端口,它将不安全:


图片


通过类似于https侦听器设置,让我们将虚拟主机附加到它。


现在,LSWS将侦听第80个端口并将请求从该端口发送到443,从而重写该url。
总之,我建议降低LSWS日志记录级别,该级别默认情况下设置为“调试”。 在这种模式下,原木以闪电般的速度繁殖! 在大多数情况下,警告等级就足够了。 转到服务器配置>日志:


图片


这样就完成了OpenLiteSpeed作为反向代理的配置。 再次我们重新启动LSWS,单击链接https://cloud.connect.link并查看:


图片


为了让Nextcloud进入我们,您需要将cloud.connect.link域添加到受信任域列表中。 去编辑config.php。 我在安装Ubuntu时自动安装了Nextcloud,配置位于此处:/ var / snap / nextcloud / current / nextcloud / config。


在trusted_domains密钥上,添加“ cloud.connect.link”参数:


'trusted_domains'=>
数组(
0 =>'172.16.22.110',
1 =>'cloud.connect.link',
),

图片


此外,在同一配置中,您必须指定我们代理的IP地址。 我提请您注意必须指定对Nextcloud服务器可见的地址的事实。 IP本地接口LSWS。 没有此步骤,Nextcloud Web界面将起作用,但是未授权应用程序。


'trusted_proxies'=>
数组(
0 =>'172.16.22.100',
),

好了,之后我们可以进入授权界面:


图片


问题解决了! 现在,每个客户端可以安全地使用其个人URL中的“文件云”,带有文件的服务器与Internet分离,将来的客户端将获得相同的信息,并且不会影响其他IP地址。
此外,您可以使用反向代理来传递静态内容,但是对于Nextcloud,这不会显着提高速度。 因此,这是可选的和可选的。


很高兴分享这个故事,希望有人能对您有所帮助。 如果您知道解决问题的更优雅有效的方法,我将不胜感激!

Source: https://habr.com/ru/post/zh-CN452750/


All Articles