【Apache HTTPD】ServerName と UseCanonicalName と自己参照URL

ServerName? あぁ、名前ベースVirtualHost のルーティングに使うやつねー」

という認識だったのですが、どうやら、それだけではないらしいです。

つまり、Apacheがリダイレクトのレスポンスを作る際に (DirectorySlashmod_rewrite 等によるリダイレクトなど?) 、自分自身を指す名前 (自己参照URL) としてもここの設定が使われる (場合がある) とのこと。

Additionally, this is used when creating self-referential redirection URLs when UseCanonicalName is set to a non-default value.

ServerName Directive より

「お前は何を言いたいんだ?」

SSLアクセラレータやらL7のLBがある環境のバックエンドサーバーで、

ServerName https://www.example.com:443

のように設定することで、こんなRewriteRuleしなくても、幸せになれるかもしれない (未検証)

ただし、ServerName の設定値が 自己参照URLに使われるかどうかは、UseCanonicalNameUseCanonicalPhysicalPort の設定次第。

Sometimes, the server runs behind a device that processes SSL, such as a reverse proxy, load balancer or SSL offload appliance. When this is the case, specify the https:// scheme and the port number to which the clients connect in the ServerName directive to make sure that the server generates the correct self-referential URLs.

ServerName Directive より

参考: SSLアクセラレータ配下のapacheで、アクセスがhttpかhttpsかを判別する方法 – うまいぼうぶろぐ