すでにバーチャルホスト無しで動いている環境で、バーチャルホストを追加する場合の設定。すぐ忘れるのでメモ。
以下条件。極力オリジナルのhttpd.confは触らない方針で。
- OS:CentOS 5.5
- WEBサーバ:Apache 2.2.3
- apache設定ファイルを置くディレクトリ:/etc/httpd/conf.d
最初にまず、デフォルトのServerNameを無効化。
1 |
vi /etc/httpd/conf/httpd.conf |
1 2 3 |
ServerName www.example.com:80 ↓ #ServerName www.example.com:80 |
バーチャルホスト用の設定ファイルを作る。
1 |
vi /etc/httpd/conf.d/vhost.conf |
以下のように記述。
ポイントは、デフォルトのドメインでアクセスしたときの設定も<VirtualHost>ディレクティブで改めてしなければならないということ。
つまりバーチャルで追加したいFQDNのバーチャルホスト設定をしただけではダメ。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
# Nameベースのバーチャルホスト利用を宣言 NameVirtualHost *:80 #NameVirtualHost *:443 # SSLの設定もする場合。たいていssl.confで宣言されているので不要 # デフォルトドメインでアクセスされた時の設定ここから ######### <VirtualHost *:80> # もしくは _default_:80 DocumentRoot /var/www/html ServerName origin.com:80 <Directory "/var/www/html"> Options -Indexes FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost> # SSLの設定はssl.confに準じているので特に不要 # 設定を上書きしたいときはここに書く # デフォルトドメインでアクセスされた時の設定ここまで ######### # ここから本来追加したいバーチャルホストの設定 # バーチャルホスト1つ目の設定ここから ##################### <VirtualHost *:80> DocumentRoot /home/hoge/hoge.com # 備考 #/home/user以下をDocumentRootにしたい場合は、/home/userの #パーミッションが700だと403エラーになるので、755や705にする必要がある。 ServerName hoge.com.com:80 # ログ出力を分けたい場合 ErrorLog logs/hoge.com-error_log CustomLog logs/hoge.com-access_log common <Directory "/home/hoge/hoge.com"> Options -Indexes FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost> # SSLの設定もする場合 <VirtualHost *:443> DocumentRoot /home/hoge/hoge.com ServerName hoge.com:443 # ログ出力を分けたい場合 ErrorLog logs/hoge.com-ssl_error_log TransferLog logs/hoge.com-ssl_access_log LogLevel warn <Directory "/home/hoge/hoge.com"> Options -Indexes FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory> SSLEngine on # SSLv2,v3は使わない SSLProtocol all -SSLv2 -SSLv3 SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW # サーバ証明書などの場所 SSLCertificateFile /etc/httpd/conf/ssl.crt/hoge.com.cer SSLCertificateKeyFile /etc/httpd/conf/ssl.key/hoge.com.key SSLCertificateChainFile /etc/httpd/conf/ssl.crt/cacert.cer # この辺以下は一緒 <Files ~ "\.(cgi|shtml|phtml|php3?)$"> SSLOptions +StdEnvVars </Files> <Directory "/var/www/cgi-bin"> SSLOptions +StdEnvVars </Directory> SetEnvIf User-Agent ".*MSIE.*" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 # ログ出力を分けたい場合 CustomLog logs/hoge.com-ssl_request_log \ "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" </VirtualHost> # バーチャルホスト1つ目の設定ここまで #################### # 他にもバーチャルホストを作る場合、上記をコピペしてここに同じように書く |
参考URL)