実は、Discourse が nginx で使用する設定には、すでにホットリンク防止のための記述が含まれていますが、コメントアウトされています。そのため、app.yml ファイルにいくつかの置換を追加して、これらの行のコメントを解除することができます。
お好みのエディタで /var/discourse/containers/app.yml を編集してください。ファイルの末尾には run セクションがあり、その中に echo "end of custom commands" を実行する exec が記述されています。
その exec の直前に、以下の行を追加してください。
- replace:
filename: "/etc/nginx/conf.d/discourse.conf"
from: "#valid_referers none blocked mysite.com *.mysite.com;"
to: valid_referers none blocked mysite.com *.mysite.com;
- replace:
filename: "/etc/nginx/conf.d/discourse.conf"
from: "#if ($invalid_referer) { return 403; }"
to: if ($invalid_referer) { return 307 /; }
最初の置換セクションにある to: の行には mysite.com *.mysite.com とありますが、これを自分のドメイン名に置き換えてください。例えば discourse.org *.discourse.org のようにします。2 番目の置換は、訪問者を Discourse のホームページにリダイレクトしたいという前提に基づいています。
変更を保存した後、以下のコマンドを実行して、更新された nginx 設定で Discourse を再構築してください。
cd /var/discourse
./launcher rebuild app