ApacheでVirtualHost
とある案件でApacheの設定でVirtualHostを使っておりました。
※VirtualHostとは簡単に言えば、1台のサーバで複数のドメインを管理できる仕組みです。
「www.aaa.com」というドメインからアクセスされた場合は「/var/www/aaa」へ、
「www.bbb.com」というドメインからアクセスされた場合は「/var/www/bbb」へ振り分けることができます。
この仕組みでしばらく運用していたのですが、後からSSLを導入することになりました。
その時に詰まったこととその解決方法を記したいと思います。
最初は単純に「httpd.conf」に以下のような設定をすれば問題ないかな、と甘く見ていたのですが、残念ながらhttpでは問題ないのですがhttpsでアクセスできませんでした。
httpsのポート番号が443なので、下記のように80の時と同様のドキュメントルートを設定すれば問題ないと思っていたのですが。。。
NameVirtualHost *:80 NameVirtualHost *:443 <VirtualHost *:80> DocumentRoot "/var/www/html" ServerName www.hogehoge.com </VirtualHost> <VirtualHost *:443> DocumentRoot "/var/www/html" ServerName www.hogehoge.com </VirtualHost>
上手くいかないので、以下のような書き方を試しましたがやはりダメでした。
NameVirtualHost *:80 NameVirtualHost *:443 <VirtualHost *:80 *:443> DocumentRoot "/var/www/html" ServerName www.hogehoge.com </VirtualHost>
原因はssl.conf
色々詰まりましたが、結果的にssl.confファイルでポート443をListenしていたことが原因でした。
Apacheを導入していればssl.confの中に以下の記述がありますよね?
vim /etc/httpd/conf.d
Listen 443
VirtualHostの設定をhttpd.confに入れていようと、ポート443からのアクセスを待っている設定があるのであれば、443からのアクセスはすべてそちらに行ってしまいます。
解決方法はssl.confのVirtualHostに設定
ssl.conf内にはすでにVirtualHostの記述があるはずです。(
ここのVirtualHostの中に以下を追記すれば上手く行きました。
<VirtualHost _default_:443>
・
・
・
ServerName www.hogehoge.com:443
DocumentRoot "/var/www/html/"
・
・
・
</VirtualHost>
まとめ
上記のやり方でも上手くいくはずですが、VirtualHostは設定の仕方が色々なので、他の書き方もあると思います。
VirtualHostの設定に限らず、ポート443でアクセスされた時の設定で上手くいかない場合、他のファイルでListenされていないかなど確認してみてください。
サーバ構築の実際がわかる Apache[実践]運用/管理 (Software Design plus)
- 作者: 鶴長鎮一
- 出版社/メーカー: 技術評論社
- 発売日: 2012/03/23
- メディア: 単行本(ソフトカバー)
- 購入: 6人 クリック: 109回
- この商品を含むブログ (14件) を見る
初めてのWebサーバ「Apache」CentOS 7編 (NextPublishing)
- 作者: 大津真
- 出版社/メーカー: インプレスR&D
- 発売日: 2017/05/26
- メディア: Kindle版
- この商品を含むブログを見る
できるPRO Apache Webサーバー 改訂版 Version 2.4/2.2/2.0対応 (できるPROシリーズ)
- 作者: 辻秀典,渡辺高志,鈴木幸敏,できるシリーズ編集部
- 出版社/メーカー: インプレス
- 発売日: 2013/01/25
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (2件) を見る
「プロになるためのWeb技術入門」 ――なぜ、あなたはWebシステムを開発できないのか
- 作者: 小森裕介
- 出版社/メーカー: 技術評論社
- 発売日: 2010/04/10
- メディア: 大型本
- 購入: 57人 クリック: 1,242回
- この商品を含むブログ (35件) を見る