Я установил RocketChat на своем сервере и настроил виртуальный хост apache2 для использования ProxyPassReverse, чтобы показать посетителю localhost: 3000, когда они получают доступ к rc.domain.com.
Единственная проблема в том, что он не перенаправляет вас и показывает «Запрещено, у вас нет разрешения на доступ / на этом сервере», независимо от того, что вы делаете.
Мой файл etc / apache2 / sites-enabled / website.conf:
<VirtualHost *:443>
ServerAdmin support@domain.com
ServerName rc.domain.com
ErrorLog /var/log/rc.domain.com_error.log
TransferLog /var/log/rc.domain.com_access.log
LogLevel info
SSLEngine On
SSLCertificateFile /etc/ssl/certs/domain.com.crt
SSLCertificateKeyFile /etc/ssl/private/domain.com.key
SSLCertificateChainFile /etc/ssl/certs/domain.com.crt
<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>
Я использую Cloudflare «Всегда использовать HTTPS» и его автоматическое шифрование веб-сайтов, если это помогает.У Apache есть другой виртуальный хост, работающий на порте 80, и у этого виртуального хоста есть поддомен первого.Вот вывод ErrorLog:
[Mon Mar 11 22:28:53.305103 2019] [ssl:info] [pid 1224] AH02568: Certificate and private key rc.example.com:443:0 configured from /etc/ssl/certs/example.com.crt and /etc/ssl/private/example.com.key
[Mon Mar 11 22:28:53.722851 2019] [ssl:info] [pid 1225] AH01914: Configuring server rc.example.com:443 for SSL protocol
В Rocketchat нет видимых ошибок.
/var/log/apache2/access.log:
[my ip] - - [11/Mar/2019:23:01:33 +0000] "GET / HTTP/1.1" 403 505 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:66.0) Gecko/20100101 Firefox/66.0"
РЕДАКТИРОВАТЬ: Исправлено!Для тех, кто столкнется с этой проблемой в будущем: попробуйте установить порт на 80 вместо 443, который исправил это для меня.