「アップロードが大きすぎます。最大サイズは4MBです」というエラーメッセージが4MB未満のPDFファイルをアップロードする際に表示されます。
以下に私のテスト結果を示します。
- 68KBのPDFは、予想通り正常にアップロードされます。
- 2.3MBのJPGは、予想通り正常にアップロードされます。
- PDFファイル(2.3MB)は、2.3MBですがエラーが発生します!
- 3.6MBのJPGは、予想通り正常にアップロードされます。
奇妙なことに、meta.discourse.orgではアップロードが正常に完了します。設定を変更されたのかもしれません。
max を含む設定は変更していません。
セルフホストインスタンス(https://discuss.afpy.org)で、バージョン2.9.0.beta9 4af080d20b を使用しています。
Canapin
(Coin-coin le Canapin)
2
私のフォーラムでは、ファイルサイズの制限を変更していないため、このファイルに問題はありません。
「いいね!」 1
テストサイト (4b561277a9) で、max 設定やファイル制限を変更せずに実行したところ、authorized extensions に pdf を追加すると正常にアップロードでき、デフォルトに戻すと「申し訳ありませんが、アップロードしようとしているファイルは承認されていません」という正しいエラーメッセージが表示されました。
再現できるか試すために、他に何か試せることはありますか?
Falco
(Falco)
5
いいえ、そのファイルサイズはデフォルトのnginxサイズ制限を下回っています。しかし、それは良い手がかりです。
Julien_Palard氏がセルフホストしているサイトは、Discourseとブラウザの間にカスタムリバースプロキシを備えているため、そのエラーはおそらく設定ミスのあるリバースプロキシから来ているのでしょう。
「いいね!」 5
pfaffman
(Jay Pfaffman)
6
Discourse の前にリバースプロキシを設置していますか?どのようにインストールしましたか?
nginx を使用しています。設定は以下のようになります。
そのため、nginx の設定は次のようになります。
server
{
listen [::]:80; listen 80;
server_name {{ discourse_domain }};
access_log /var/log/nginx/{{ discourse_domain }}-access.log;
error_log /var/log/nginx/{{ discourse_domain }}-error.log;
return 301 https://$host$request_uri;
}
server
{
listen [::]:443 ssl; listen 443 ssl;
server_name {{ discourse_domain }};
access_log /var/log/nginx/{{ discourse_domain }}-access.log;
error_log /var/log/nginx/{{ discourse_domain }}-error.log;
include snippets/letsencrypt-{{ discourse_domain }}.conf;
location / {
proxy_pass http://unix:/var/discourse/shared/standalone/nginx.http.sock:;
proxy_set_header Host $http_host;
proxy_http_version 1.1;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Real-IP $remote_addr;
}
}
これは Debian bullseye の nginx 1.18.0-6.1+deb11u2 です。
nginxから413 Request Entity Too Largeエラーが出ています。明らかに、「大きい」画像は問題ないのに、「それほど大きくない」PDFがそうではない理由をさらに詳しく調べる必要があります。
3.0MBのJPGのContent-Lengthは557215で、驚くべきことに0.5MBでした!
2.3MBのPDFのContent-Lengthは2460137で、予想通り2.3MBでした。
DiscourseはJPGをアップロード前にリサイズしていますか?
私がアップロードしたJPEGでは、Discourseにアップロードした後、画像の幅と高さが異なっていることがわかります(https://apod.nasa.gov/apod/image/2209/DSCF4968_PS_Lioce.jpgで試しました。これは5703x3892、3.6MBの画像ですが、アップロード後は1920×1310、153KBの画像になります)。
「いいね!」 1
nginx の client_max_body_size のデフォルトは 1MB で、クライアント側でリサイズされた jpeg はすべて 1MB 未満なので、すべてが明確になりました。
nginx の設定を修正しました: Set client_max_body_size to 4m to match Discourse configuration. · AFPy/infra@861af29 · GitHub
これで動作するようになりました。あなたの言う通りでした。私のリバースプロキシが原因でした。
皆さん、ありがとうございました
そして、騒がせてごめんなさい!
「いいね!」 4
Canapin
(Coin-coin le Canapin)
10
unsupported-install タグを誤って追加したくありませんが、このトピックには最初から付いているべきだったと思いますか?
pfaffman
(Jay Pfaffman)
11
リバースプロキシの設定方法を説明するトピックがありますので、通常はこれでお手伝いできます。
「いいね!」 1
Falco
(Falco)
12

はい!この超素晴らしい機能についてはブログ記事もあります。
「いいね!」 7
system
(system)
クローズされました:
13
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.