Discourseはbrotliやgzip圧縮を使用していませんか?

こんにちは。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 インストールガイドに従った標準的なものですか?

これに従いました:

ポート 80 が既に使用されていたため、アプリをブートストラップする前に app.yml のポートを変更しました。

discourse setup は使用せず、すでに Docker がインストールされていました。

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 設定でポートをリダイレクトしました:

以上です。

さて、問題の原因はここです。プロキシとして機能しているものの、データを正しく通過させていません。

インターネットを直接コンテナに接続し、これらの処理をすべて自動的に処理する、当社の標準インストールをそのまま使用することをお勧めします。

ありがとうございます。サーバーやそのようなことについてはあまり詳しくなく、どうすればよいのかわかりません。以前は Plesk のデフォルト設定を使用しており、nginx のプロキシ設定でも問題なく動作していました。

とにかく、自分で調べてみます。

@Arkshine さんのおかげで、私の問題は解決しました。

/etc/nginx/proxy.inc 内の以下の行をコメントアウトする必要がありました。

proxy_hide_header Vary;
proxy_set_header Accept-Encoding '';

これで、サーバーは Discourse によって正しく圧縮されたファイルを送信するようになりました: