1

У меня есть следующий сценарий:

У меня есть статический IP-адрес от моего интернет-провайдера. Я использовал это в течение многих лет на маленьком сервере Rasbian на Raspberry PI, работающем с owncloud.

Теперь я купил гораздо более мощный пакет zotac (четырехъядерный процессор, 8 ГБ ОЗУ, 256 ГБ SSD), и я пытаюсь получить как сервер owncloud, работающий на https, так и сервер rocket.chat (аналог Slack) который, конечно, также должен работать на https.

Коробка Zotac работает под управлением Ubuntu Server 18.04 LTS и находится за маршрутизатором Airport Extreme. У меня есть 2 разных поддоменов в основном домене, указывающих на мой IP-адрес.

Я настроил маршрутизацию для портов 80 , 443 и 8443 чтобы все перенаправлялись на локальный IP-адрес моего zotac box 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 поставляется в быстрой установке, где rocket.chat работает на веб-сервере caddy на localhost:3000 . Я попытался выполнить настройку https, описанную в https://rocket.chat/docs/installation/manual-installation/ubuntu/snaps/autossl/, но не смог заставить его работать. Я также попытался настроить Apache, который запускает сервер owncloud, для работы в качестве обратного прокси-сервера, как описано в https://stackoverflow.com/questions/8541182/apache-redirect-to-another-port, но мне не удалось заставить его работать.

Затем я попытался настроить виртуальный хост для порта 8443 с помощью этого файла rocketchat.conf:

<VirtualHost *:8443>
    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt
    SSLCertificateKeyFile /etc/private/ssl/apache-selfsigned.key
    ServerAdmin admin@example.com
    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 ответ1

2

Я думаю, что официальная ракета.Документация чата достаточно понятна:

Запуск за обратным прокси-сервером 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 it@domain.com
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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .