在路由器后面的单台机器/ip 上设置 owncloud 服务器和 rocket.chat 服务器

在路由器后面的单台机器/ip 上设置 owncloud 服务器和 rocket.chat 服务器

我有以下情况:

我的互联网提供商给我提供了一个静态 IP 地址。多年来,我一直在运行 owncloud 的 raspberry PI 上的一个小型 raspbian 服务器上使用这个地址。

现在我购买了一个功能更强大的 zotac 盒子(四核处理器、8 GB RAM、256 GB SSD),并且我试图让 owncloud 服务器和 rocket.chat 服务器(类似于 Slack)在 https 上运行,当然它也应该在 https 上运行。

Zotac 盒子运行 Ubuntu Server 18.04 LTS,位于 Airport Extreme 路由器后面。我的主域上有 2 个不同的子域指向我的 IP 地址。

80我已经为端口、443和都配置了路由,8443使其全部指向我的 zotac 盒子的本地 IP 地址192.168.1.33。示例:

在此处输入图片描述

owncloud 服务器(Apache 2 带有 PHP 7.2 和 MySQL 5.7)可以在 上运行https://cloud.mydomain.example,现在我想让 rocket.chat 可以在 上运行https://chat.mydomain.example:8443,或者更好的是,简单地在 上运行https://chat.mydomain.com

Rocket.chat 可快速安装,在 上的 caddy 网络服务器上运行localhost:3000。我尝试按照 上描述的 https 设置进行操作https://rocket.chat/docs/installation/manual-installation/ubuntu/snaps/autossl/但无法让它工作。我还尝试设置运行 owncloud 服务器的 Apache 作为反向代理,如中所述https://stackoverflow.com/questions/8541182/apache-redirect-to-another-port,但没能让它发挥作用。

然后我尝试使用以下 rocketchat.conf 文件为端口 8443 设置虚拟主机:

<VirtualHost *:8443>
    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt
    SSLCertificateKeyFile /etc/private/ssl/apache-selfsigned.key
    ServerAdmin [email protected]
    ServerName localhost
    ProxyPreserveHost On

    <Proxy *>
        Order allow,deny
        Allow from all
    </Proxy>
    ProxyPass / https://localhost:3000/
    ProxyPassReverse / https://localhost:3000/
</VirtualHost>

我也不明白为什么我不能简单地让我的 caddy 监听端口 8443(并且仍然使用 https),而 Apache 监听端口 80 和 443。

哪种设置最适合我的情况?需要采取哪些步骤?

答案1

我觉得Rocket.Chat 官方文档足够清楚:

在 Apache SSL 反向代理后面运行

以 root 身份运行:

apt-get update
apt-get install apache2
a2enmod proxy_http
a2enmod proxy
a2enmod ssl
a2enmod proxy_wstunnel
a2enmod rewrite

将您的私钥添加到/etc/ssl/private/chat.domain.com.key

锁定权限:chmod 400 /etc/ssl/private/chat.domain.com.key

将您的证书添加到/etc/ssl/certs/chat.domain.com.crt

将您的中间体添加到/etc/ssl/certs/intermediate.ca.pem

编辑/etc/apache2/sites-enabled/rocketchat.conf并确保使用您的实际主机名代替下面的示例主机名“your_hostname.com”。

<VirtualHost *:443>

ServerAdmin [email protected]
ServerName chat.domain.com
ErrorLog /var/log/chat.domain.com_error.log
TransferLog /var/log/chat.domain.com_access.log
LogLevel info
SSLEngine On
SSLCertificateFile /etc/ssl/certs/chat.domain.com.crt
SSLCertificateKeyFile /etc/ssl/private/chat.domain.com.key
SSLCertificateChainFile /etc/ssl/certs/intermediate.ca.pem

<Location />
        Order allow,deny
        Allow from all
</Location>

RewriteEngine On
RewriteCond %{HTTP:Upgrade} =websocket [NC]
RewriteRule /(.*)           ws://localhost:3000/$1 [P,L]
RewriteCond %{HTTP:Upgrade} !=websocket [NC]
RewriteRule /(.*)           http://localhost:3000/$1 [P,L]

ProxyPassReverse / http://localhost:3000/
</VirtualHost>

重新启动Apache:service apache2 restart

当它说

请务必使用您的实际主机名代替示例主机名“your_hostname.com”

这可能意味着

请务必使用您的实际外部 https 地址(例如https://www.example.com)代替http://localhost:3000

相关内容