問題の概要
ライブ Discourse サイト (https://techenclave.com) の URL 経由で画像アップロードにアクセスすると 404 エラーが発生します。画像はディスク上に存在し、内部的には正しく提供されているにもかかわらずです。投稿をリベイクし、アプリを再起動し、内部提供が機能することを確認しましたが、外部からは依然として 404 が返されます。
正常に動作している点
1. DB にアップロードが存在する
Rails コンソールを使用して、アップロードがすべての正しいメタデータとともに存在することを確認しました。
Upload.find_by(sha1: 'a8fbe877e685e6a6994532c946c446b1279da7d2')
出力には以下が含まれます:
url: \"/uploads/default/original/3X/a/8/a8fbe877e685e6a6994532c946c446b1279da7d2.jpeg\"- ファイル名:
IMG202506252257011.jpg - ID:
170265 - 投稿 ID で使用中:
3125774
2. ディスク上にファイルが存在する
ファイルがコンテナ内に存在することを確認しました。
ls -l /shared/uploads/default/original/3X/a/8/a8fbe877e685e6a6994532c946c446b1279da7d2.jpeg
正しい所有権と権限を持つファイルが存在します:
discourse:www-data, -rw-r--r--。
3. 公開フォルダからのシンボリックリンクが機能する
public/uploads のシンボリックリンクはそのままです。
ls -l /var/www/discourse/public/uploads
# => /shared/uploads
4. Discourse は内部的に提供できる
以下でテストしました。
curl -I http://localhost:3000/uploads/default/original/3X/a/8/a8fbe877e685e6a6994532c946c446b1279da7d2.jpeg
結果: HTTP/1.1 200 OK
5. 投稿がリベイクされた
以下を使用して投稿をリベイクしました。
Post.find(3125774).rebake!
6. アプリが再起動された
以下を実行しました。
./launcher restart app
以下も試しました。
sudo ./launcher rebuild app
(Docker デーモンは一時的に利用できませんでしたが、後に修正されました。)
動作していない点
画像への外部アクセス
以下にアクセスします。
https://techenclave.com/uploads/default/original/3X/a/8/a8fbe877e685e6a6994532c946c446b1279da7d2.jpeg
返されるのは:
404 Not Found
これはブラウザやシークレットモードでも発生します。
助けが必要なこと
以下のような原因を特定するのを手伝ってもらえませんか?
localhost:3000経由で提供される正常に動作するアップロードが、- 公開ドメインで外部から 404 を返すのはなぜですか?
他に確認すべきことはありますか?関連する設定やログを調べるべきものはありますか?
よろしくお願いします!
