次のシナリオがあります。
インターネットプロバイダーからの静的IPアドレスを持っています。私はこれを何年もの間、owncloudを実行しているRaspberryPi上の小さなraspbianサーバーで利用してきました。
今、私ははるかに強力なzotacボックス(クアッドコアプロセッサ、8 GB RAM、256 GB SSD)を購入し、httpsで実行されているowncloudサーバーとrocket.chatサーバー(Slackと同様)の両方を取得しようとしています。もちろん、これはhttpsでも実行する必要があります。
ZotacボックスはUbuntuServer 18.04 LTSを実行し、AirMacExtremeルーターの後ろにあります。メインドメインにIPアドレスを指す2つの異なるサブドメインがあります。
ポート80
、443
、および8443
のルーティングを構成して、すべてzotacボックスのローカルIPアドレス192.168.1.33
に転送しました。例:
Owncloudサーバー(Apache 2 with PHP 7.2およびMySQL5.7)はhttps://cloud.mydomain.example
で動作し、rocket.chatをhttps://chat.mydomain.example:8443
で動作させたいと考えています。単にhttps://chat.mydomain.com
で。
Rocket.chatは、localhost:3000
のキャディWebサーバーでrocket.chatが実行されるスナップインストールで提供されます。 https://rocket.chat/docs/installation/manual-installation/ubuntu/snaps/autossl/ で説明されているhttps設定に従おうとしましたが、機能させることができませんでした。また、 https://stackoverflow.com/questions/8541182/Apache-redirect-to-another-port で説明されているように、owncloudサーバーを実行するApacheをリバースプロキシとして機能するように設定しようとしました。 、しかしそれを機能させることができませんでした。
次に、この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>
また、Apacheが80と443でリッスンしているのに、キャディにポート8443でリッスンさせる(そしてhttpsを使用する)ことができない理由もわかりません。
私のシナリオに最適な設定はどれですか?実行する必要のある手順は何ですか?
Rocket.Chatの公式ドキュメント は十分に明確だと思います:
ApacheSSLリバースプロキシの背後で実行これを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://www.example.com
の代わりに、必ず実際の外部httpsアドレス(例:http://localhost:3000
)を使用してください。