> ## Content Index
> Fetch the complete content index at: https://nigzu.com/llms.txt
> Use this file to discover other available public pages before exploring further.

# Ghost进阶： Cloudflare相关
- URL: https://nigzu.com/ghost-cloudflare/
- Published: 2022-08-10T22:35:52.000Z
- Updated: 2025-05-03T17:48:03.000Z
- Author: 宁嘉
- Tags: Ghost, 自托管

更新时间：2022年9月6日23点56分

---

### 图片无法跨域

关闭"Scrape Shield-Hotlink"保护（防止站外链接指向您的图像。）否则NewsLetter无法显示文章中的图片。

### 用Cloudflare Web Analytics

Cloudflare 有一个功能全面的网站分析(Web Analytics)面板，如果你的域名托管在Cloudflare，则会自动进行访问统计，不需要在网站中植入脚本；否则，需要一段Cloudflare提供的JavaScript代码，可以在Ghost-Sttings-Code injection中引入，实测会被浏览器AdBlocker广告过滤插件会拦截，因此，如果域名不在Cloudflare解析，推荐用自托管的站点统计工具[umami](https://github.com/umami-software/umami?ref=nigzu.com)（[Demo](https://app.umami.is/share/8rmHaheU/umami.is?ref=nigzu.com)），好处是可以统计所有时段而不仅限于一个月，其他与Cloudflare相差无几。

### 用Cloudflare CDN

Cloudflare的免费CDN只提供中国大陆以外的，大陆区访问延迟过高（响应200ms）左右，有时候还比较拥堵，当然对于自娱自乐个站来说，这些并不是考虑的重点。

有三种方式可以上CDN：

1. DNS记录上加上小云朵，此种方式可以代理地址，使服务器IP不暴露于公网之上，但不能隐藏端口，而且只支持少数几个端口（443,2053,2083,2087,2096,8443），如果博客使用443以外的端口，那么有一种补充方式是在页面规则中重定向，但这会影响浏览体验和搜索引擎优化，不推荐这么做。
2. 使用Workers，Workers在Cloudflare CDN网络上运行一些 JavaScript代码，转发端口和流量，结合Pages和R2还可以用来托管静态站点和作图床等，这种方式是过去常用的，但配置起来略麻烦。
3. [Cloudflare Tunnel](https://www.cloudflare.com/zh-cn/products/tunnel/?ref=nigzu.com)，这是新上线的服务，通过在源站上运行一个叫cloudflared（Docker或其他方式安装），主动与Cloudflare CDN之间建立一个持久化的隧道，源站无需暴露端口，只提供流量给Cloudflare节点，所有的入站访问都在Cloudflare节点上，这种方式最安全，安装配置也最方便。注：  
  - 从客户端到Tunnel默认https，Cloudflare套上自己颁发的证书，Cloudflare和源站之间，尚不清楚是否进行了端对端加密，源站提供服务给Tunnel，可以是http或者https，以及其他协议，可以肯定的，不管出站是否加密，到达Tunnel节点后都需要先解密再转发给客户端，而源站与Tunnel之间的隧道是专有连接，别的应用也访问不了，Cloudflare是一家美国公司，如果你信任Tunnel网关，可以认为它是安全的。
  - 如果源站以http提供服务给Tunnel，并且Ghost以Docker桥接的方式部署，那么url应该填Dcoker网桥的网关地址:ghost对外映射的端口，网关地址一般是172.17.0.1。
  - 如果源站以https提供服务给Tunnel，首先要先在源站对Ghost进行反向代理以启用https端口，但是反向代理不能指定来源主机，而应该以 \* 号代替，否则来自Tunnel的请求会被拒绝。

同样的，启用了CDN后，如果源站端口经过了反向代理，要么反向代理不指定来源主机，以 \* 号代替，要么将域名下SSL/TLS加密模式设为 灵活，否则会因证书问题拒绝访问。

### IPv6的问题

如果服务器只有IPv6的环境，如何在外网通过IPv4访问？

IPv4和IPv6是两张彼此独立的网络，跨网访问需要有中转服务器，Cloudflare CDN就可以提供这样的中转，只需要在ipv6 DNS记录（AAAA ）上启用小云朵，当客户端从IPv4访问时将启用Ipv4代理，反之则是IPv6代理，当然，如前所述，通过CDN代理的流量响应速度和带宽都大打折扣，更好的做法是添加一条不代理的AAAA记录，然后再添加一条代理的CNAME记录指向前者，在外网IPv6环境下使用前者，IPv4下使用后者。

最好不要对一个域名同时启用A记录和AAAA记录，因为ipv4网络环境下访问该域名会优先解析到ipv6的ipv4代理地址，而不是A记录地址直连。

### Ghost Explore无法添加

[Ghost Explore](https://ghost.org/changelog/explore/?ref=nigzu.com)是一个在官网（ghost.org）展示的网站/博客目录，所有使用Ghost建站的创作者（版本升级到5.8以上）都可以在上面添加自己的[“友情链接”](https://ghost.org/explore/?query=namdub&ref=nigzu.com)，列表按照博客会员数排序，可以分类浏览和搜索，这让分散在互联网角落的个站博主们拥有了一个社区，尽管还很简陋。

有两种添加的方式，在这个过程中，我碰到了点小问题：

如果到[Explore](https://ghost.org/explore/?ref=nigzu.com)添加自己的站点，会显示：

> ### That ain’t gonna fly.
> 
> You’ll need to submit a site running on Ghost.

如果在自己的网站上，从`https://{your_domain}/ghost/#/explore/`这个链接导航过去，同样无法加载：

![空白错误](https://nigzu.com/file/Ghost%20explore%20error.png)

> Something went wrong. Please try again or contact [support@ghost.org](mailto:support@ghost.org)

这是因为我的网站是在Cloudflare上解析的，被防火墙js质询拦截了。如果你碰到和我类似的错误，那么先把“自动程序攻击模式”关了，或者将被拦截的的Ghost IP加入白名单。

![Cloudflare自动程序攻击模式设置](https://nigzu.com/file/Cloudfalre%20setting1.png)

---

> Ghost是一套开源的（博客）建站平台，这是一个持续更新的系列，用来列举一些[官方文档](https://ghost.org/docs/introduction/?ref=nigzu.com)和公开网络上尚未详细说明的问题与解决办法，您可以用标签 [#Ghost](https://nigzu.com/tag/ghost-tag/) 或搜索找到所有相关的文章。