问题摘要
在访问 Discourse 网站 (https://techenclave.com) 的图片上传 URL 时,我遇到了 404 错误,尽管图片确实存在于磁盘上并且在内部可以正确提供。我已经重新烘焙了帖子、重启了应用程序,并验证了内部服务可以正常工作,但外部访问仍然返回 404。
正常工作部分
1. 数据库中存在上传文件
使用 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
# =\u003e /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?
我还需要检查什么?是否有相关的配置或日志需要检查?
提前感谢!
