进入 Discourse 目录
cd /var/discourse
新建一个 template,这里我叫 realip.template.yml
vi templates/realip.template.yml
输入 i,使用 vi 的 insert 模式,为文件加入如下内容:
run:
  - replace:
     filename: "/etc/nginx/conf.d/discourse.conf"
     from: "sendfile on;"
     to: |
      sendfile on;
      set_real_ip_from 0.0.0.0/0;
      real_ip_header X-Forwarded-For;
      real_ip_recursive on;
     global: true
输入 wq 保存,编辑你需要部署的 Discourse 实例的配置文件:
vi containers/app.yml
在 templates 这个部分里加入刚刚创建的 template(示例见最后一行):
templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
  - "templates/web.ssl.template.yml"
  - "templates/realip.template.yml"
输入 wq 保存,重新 build 你的 Discourse 实例即可:
./launcher rebuild app
这个功能还有待验证实际的效果,参考了 cloudflare 和 fastly 的 template 模版,总觉得这里使用 set_real_ip_from 0.0.0.0/0; 有点太简单粗暴了。
REF https://discuss.tf.wiki/t/topic/24