🐋

nginx-proxyで410 Goneを返す

2023/03/21に公開

はじめに

例えばMastodonやMisskeyの運用をやめたい時、しばらくは410 Goneを返すようにしておくと良いとされています。
返し方は環境によって変わるので、1例として書き残しておきます。

環境

手順

  1. docker-compose.ymlの編集
  2. my_proxy.confの設定

docker-compose.ymlの編集

my_proxy.confdocker-compose.ymlと同じ場所に用意し、それを読み取って反映してもらうようにします。

docker-compose.yml
   reverse-proxy:
        image: "jwilder/nginx-proxy:latest"
        container_name: "reverse-proxy"
        volumes:
            - "html:/usr/share/nginx/html"
            - "dhparam:/etc/nginx/dhparam"
            - "vhost:/etc/nginx/vhost.d"
            - "certs:/etc/nginx/certs"
            - "/run/docker.sock:/tmp/docker.sock:ro"
            - "./client_max_upload_size.conf:/etc/nginx/conf.d/client_max_upload_size.conf"
            # 今回追加
            - "./my_proxy.conf:/etc/nginx/conf.d/my_proxy.conf:ro"
        restart: "always"
        networks:
            - "net"
        ports:
            - "80:80"
            - "443:443"

my_proxy.confの設定

以下のように書いていきます。
今回はサブドメインの1つを閉鎖したかったので、server_nameに特定のものを指定します。
また、httpsにも対応できるように2種類書くことにしました。

my_proxy.conf
server {
    listen 80;
    server_name sub.example.com;
   return 410;
}
server {
    listen 443 ssl;
    server_name sub.example.com;
    return 410;
}

終わったら、コンテナを再起動して完了です。

まとめ

/etc/nginx/conf.d/my_proxy.confに設定を書くことでステータスコードを返すことができそうです。
この手の目的に対する方法は、複数見つかる代わりに自環境に合ったものがあるとは限らないので、参考になれば幸いです。

GitHubで編集を提案

Discussion