nginxのdefault serverを無効化する

ドメインを使わずにIPアドレスなどでアクセスされた場合にコンテンツを表示させないようにする方法。正確にはdefault serverを無効化する方法ではなく、default serverで何もしなくする方法である。

HTTPの場合

server {
  server_name _;
  listen 80 default_server;
  listen [::]:80 default_server;      # IPv6を使っていない場合はこの行は不要
  return 444;
}

return 444とするとnginxは何も返さずコネクションを切断します。これはバージョン1.15.2以降で使用できます。

402(カネ払え)や418(コーヒーは淹れてやんねー)などをreturnしてみるのも一興

HTTPSの場合

server {
  server_name _;
  listen 443 ssl default_server;
  listen [::]:443 ssl default_server; # IPv6を使っていない場合はこの行は不要
  ssl_reject_handshake on;
}

ssl_reject_handshake onとするとTLS接続要求を拒否してコネクションを切断します。ただしssl_reject_handshakeを使用できるのはバージョン1.19.4以降です。

IPアドレスで接続してくるのはbotか攻撃のいずれかなのでアクセス拒否してしまって問題ありません。無駄なログも出なくなるのでスッキリします。

Apple IDのサインアウトができない

TL;DR

iPhoneApple IDのサインアウトできない事態に遭遇。Macに接続してiPhoneを復元し、再度サインイン、サインアウトした。

Main Text

先日発表された緑iPhone 13を購入したのでiPhone 11を下取りに出すことにした。下取りに出すiPhoneはApple IDからサインアウトし、データを消去する必要がある。

しかし、サインアウトしようとすると"iCloudデータを削除中"と表示され1時間待っても完了しない。

チャットサポートに連絡すると、サインアウトのステップを飛ばして全てのコンテンツと設定を消去せよと案内される。

しかしiCloudにデータをアップロード中ですという表示でストップし、消去が始まらない。

再度チャットサポートに繋ぐのも面倒だったので、LightningケーブルでMacと接続してMac上でiPhoneの復元(デバイスを工場出荷時の設定に復元)を試みた。これで無事に復元が完了。

iPhone復元後の初期設定時にバックアップから設定やアプリを戻してしまうと現象が再発しそうな気がしたので戻さず、Apple IDのサインインのみ行った。ここでサインアウトを実行すると今度は数秒で完了。iCloud上の所有デバイスのリストからもiPhone 11が消えた。その後、再度iPhone 11上で"全てのコンテンツと設定を消去"を実行。こちらも無事完了。

チャットサポートは操作法が分からないといった想定内の事態には有用だが、不具合対応にはあまり役立たないようだ。対面サポートを受けられるならば利用した方がいいだろう。