Canapin
(Coin-coin le Canapin)
1
こんにちは。CentOS サーバーに Discourse をインストールしました。CentOS Web Panel も使用しています。
Discourse はデフォルトで Brotli を使用し、fallback として gzip を使用するはずですが、ファイルが圧縮されていないようです。
例として、この 2.2 MB のファイル:
https://forum.canapin.win/assets/application-301651b1c7400a000974a9cecafd44ad3304cf647cf17bcfa7af68e9ed1ac4b7.js
レスポンスヘッダー:
accept-ranges: bytes
cache-control: max-age=31536000
cache-control: public,immutable
content-length: 2334732
content-type: application/javascript
date: Sat, 12 Oct 2019 23:36:50 GMT
expires: Sun, 11 Oct 2020 23:36:50 GMT
last-modified: Sat, 12 Oct 2019 23:33:24 GMT
server: nginx/1.16.1
status: 200
リクエストヘッダー:
:authority: forum.canapin.win
:method: GET
:path: /assets/application-301651b1c7400a000974a9cecafd44ad3304cf647cf17bcfa7af68e9ed1ac4b7.js
:scheme: https
accept: */*
accept-encoding: gzip, deflate, br
accept-language: en-US,en;q=0.9
cache-control: no-cache
cookie: _t=89fc0a58f2a08712f3156f2687553cf8; __profilin=p%3Dt%2Ca%3Da546654bdc3538a213cd6c6fcc4c2a92; _forum_session=YnhETkNaTjF1YTEzVXUvZW1pS1NuTVVzdm1WWndlRktMdmNlU3hBalR3dUYwRGVUTzhBSlM5WkNiS0hDdVQvRmtGeGtLOTRRNndRWk9YUFczbTJHdjMyajlNNkpXZ2xzeEZwMkVmd2grcHlILzJVVmZWeFVVNlBERVF4S3VDMkJ0N2pUWktJWitmbXc2MDFFV1VEcG56M09jalRjMEJOb2t6M1NSbjJQUit1eDFRZkdCMGplVjhLK1JUNFVNdnRmVmZuK1B1NVdwK0N5Q1VrNTdDa01tdXh1T3h2aDY4OGx0SDMzRC9Ma0YzdElFS0p6b0x3algvVnRhVlljVDQyOS0tYnpSeFl5MjNoMVFVMm42UE0ybFJ6Zz09--b49c4c072e917618f874818e246298bce81235e5
dnt: 1
pragma: no-cache
referer: https://forum.canapin.win/
sec-fetch-mode: no-cors
sec-fetch-site: same-origin
user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36
なぜそうなるのか、ご存知でしょうか?
あなたのインストールは、公式の Docker インストールガイドに従った標準的なものですか?
Canapin
(Coin-coin le Canapin)
3
これに従いました:
ポート 80 が既に使用されていたため、アプリをブートストラップする前に app.yml のポートを変更しました。
discourse setup は使用せず、すでに Docker がインストールされていました。
Canapin
(Coin-coin le Canapin)
4
Discourse のインストール方法を正確に説明します。私が踏んだ手順は以下の通りです:
git clone https://github.com/discourse/discourse_docker.git /var/discourse
cd /var/discourse
cp samples/standalone.yml containers/app.yml
ここでポートを変更しました:
## このコンテナが公開する TCP/IP ポートはどれですか?
## Discourse を Apache や nginx などの他の Web サーバーとポートを共有させたい場合は、
## https://meta.discourse.org/t/17247 を参照してください
expose:
- "8080:80" # ホストのポート 80 をコンテナのポート 8080 (http) に転送
- "4443:443" # ホストのポート 443 をコンテナのポート 4443 (https) に転送
./launcher bootstrap app
./launcher start app
さらに、CentOS Web Panel 内の nginx 設定でポートをリダイレクトしました:
以上です。
sam
(Sam Saffron)
5
さて、問題の原因はここです。プロキシとして機能しているものの、データを正しく通過させていません。
インターネットを直接コンテナに接続し、これらの処理をすべて自動的に処理する、当社の標準インストールをそのまま使用することをお勧めします。
Canapin
(Coin-coin le Canapin)
6
ありがとうございます。サーバーやそのようなことについてはあまり詳しくなく、どうすればよいのかわかりません。以前は Plesk のデフォルト設定を使用しており、nginx のプロキシ設定でも問題なく動作していました。
とにかく、自分で調べてみます。
Canapin
(Coin-coin le Canapin)
7
@Arkshine さんのおかげで、私の問題は解決しました。
/etc/nginx/proxy.inc 内の以下の行をコメントアウトする必要がありました。
proxy_hide_header Vary;
proxy_set_header Accept-Encoding '';
これで、サーバーは Discourse によって正しく圧縮されたファイルを送信するようになりました: