# 附件仅服务器本地可用，但不对外公开

**URL:** <https://meta.discourse.org/t/attachments-serving-locally-on-the-server-but-not-publicly/372181>\
**Category:** Support\
**Created:** [2025年六月29日 19:16 UTC](https://meta.discourse.org/t/attachments-serving-locally-on-the-server-but-not-publicly/372181 "2025-06-29T19:16:48Z")\
**Posts on this page:** 1\
**Showing post:** 1

<div class="post-metadata">

**Author:** ![SubStrider](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/substrider/32/512604_2.png) [@SubStrider](https://meta.discourse.org/u/SubStrider)\
**Post date:** [2025年六月29日 19:16 UTC](https://meta.discourse.org/t/attachments-serving-locally-on-the-server-but-not-publicly/372181/1 "2025-06-29T19:16:48Z")

</div>

## 问题摘要

在访问 Discourse 网站 (`https://techenclave.com`) 的图片上传 URL 时，我遇到了 **404 错误** ， **尽管** 图片确实存在于磁盘上并且在内部可以正确提供。我已经重新烘焙了帖子、重启了应用程序，并验证了内部服务可以正常工作，但外部访问仍然返回 404。

* * *

## 正常工作部分

### 1. 数据库中存在上传文件

使用 Rails 控制台，我确认上传文件存在且所有元数据都正确：

```ruby
Upload.find_by(sha1: 'a8fbe877e685e6a6994532c946c446b1279da7d2')

```

**输出包括** ：

- `url: \"/uploads/default/original/3X/a/8/a8fbe877e685e6a6994532c946c446b1279da7d2.jpeg\"`
- 文件名：`IMG202506252257011.jpg`
- ID：`170265`
- 使用的帖子 ID：`3125774`

* * *

### 2. 磁盘上存在文件

已验证文件存在于容器内部：

```bash
ls -l /shared/uploads/default/original/3X/a/8/a8fbe877e685e6a6994532c946c446b1279da7d2.jpeg

```

✔ 文件存在，所有权和权限正确：  
`discourse:www-data`，`-rw-r--r--`。

* * *

### 3. 公共文件夹的符号链接正常工作

`public/uploads` 符号链接完好无损：

```bash
ls -l /var/www/discourse/public/uploads
# =\u003e /shared/uploads

```

* * *

### 4. Discourse 可以内部提供文件

使用以下命令进行测试：

```bash
curl -I http://localhost:3000/uploads/default/original/3X/a/8/a8fbe877e685e6a6994532c946c446b1279da7d2.jpeg

```

结果：`HTTP/1.1 200 OK`

* * *

### 5. 帖子已重新烘焙

使用以下命令重新烘焙了帖子：

```ruby
Post.find(3125774).rebake!

```

* * *

### 6. 应用程序已重启

运行了：

```bash
./launcher restart app

```

也尝试了：

```bash
sudo ./launcher rebuild app

```

（Docker 守护进程暂时不可用，但后来已修复。）

* * *

## 未正常工作部分

### 图片外部访问

访问：

```plaintext
https://techenclave.com/uploads/default/original/3X/a/8/a8fbe877e685e6a6994532c946c446b1279da7d2.jpeg

```

返回：

```plaintext
404 Not Found

```

这种情况发生在所有浏览器和隐身模式下。

* * *

## 需要帮助的部分

能否有人帮助确定可能导致以下情况的原因：

- 一个可以正常工作的上传文件，通过 `localhost:3000` 提供，
- 但在公共域名的外部访问时返回 404？

我还需要检查什么？是否有相关的配置或日志需要检查？

提前感谢！

---

_[View the full topic](https://meta.discourse.org/t/attachments-serving-locally-on-the-server-but-not-publicly/372181)._
