質問: ルーターの背後にある単一のマシン/ ipにowncloudサーバーとrocket.chatサーバーをセットアップします 次のシナリオがあります。インターネットプロバイダーからの静的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 admin@example.com 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 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://www.example.comの代わりに、必ず実際の外部httpsアドレス(例:http://localhost:3000)を使用してください。