nginxとapacheの連携、バーチャルホストの設定がわからない・・・

電脳備忘録
よくわかっていないままやっていると、仕組みを熟知している方から怒られそうです。 実際そんな場面をネット上ではよく見ます。

しかし誰だって最初は素人、いきなり玄人になれるはずはないので、日々の経験が大事なんだと個人的には思っています。(作った仕組みで他人が迷惑をかけてしまわないよう考慮する必要はあると思います。)

前置きはさておき、webサーバのサブドメイン設定で躓き、なんとか解決出来たので、自分向け備忘録として残しておこうと思います。

お約束

他に詳しく書かれたサイトがありますので、そちらを参照したほうがいいと思います。このエントリーはあまり参考にならないかと...。

私はこの方法で自分のやりたいことが出来たということです・・・。

バーチャルホストでサブドメインを設定するもサイトが表示されない

このサイトはnginxとapacheとを連携させて動かしています。nginxはリバースプロキシとして利用しています。 今取得しているドメインにサブドメインを設定して別のサイトを構築したいと思い、先だってムームードメインのDNS設定でサブドメインを作りました。

で、先人の知恵を拝借すべくgooleで得た情報を元にnginx、apacheにそれぞれバーチャルホストを設定したものの、意図したとおりにはなりませんでした。意図しなかったというのは、
例えばサーバー名をkurumi.560days.com、ドキュメントルートを/var/www/kurumiと設定をしたときに、kurumi.560days.comにアクセスしてもkurumiディレクトリ内のコンテンツが表示されず、560days.comのトップページが表示されていたということす。

最初はDNSの浸透に時間がかかっているのかと思いましたが、nslookupで引けたのでwebサーバの設定を疑ったというわけです。

原因の切り分け

nginxとapache二つのwebサーバを起動しているのでどちらの設定に誤りがあるのか切り分けることにしました。
いったんnginxを停止してapacheのみで動かし、バーチャルホストを設定してみたところ、kurumi.560days.comにアクセスしたときkurumiディレクトリ内のコンテンツが表示されました。どうやらnginxとapache間のバーチャルホストの設定に誤りがありそうだということがわかりあれこれ試行錯誤してみました。あまりに集中していたため、途中の過程を覚えていないのがアレですが、動いたときの設定を残しておきます。

やったこと

apacheのバーチャルホスト設定

/etc/httpd/conf/httpd.conf
・
・
Listen 8082
・
・
NameVirtualHost *:8082
・
・
‹VirtualHost *:8082›
ServerName kurumi.560days.com
DocumentRoot /var/www/kurumi
RPAFenable On
RPAFsethostname On
RPAFproxy_ips 127.0.0.1 10.0.0.1
RPAFheader X-Forwarded-For
‹/VirtualHost›

nginxのバーチャルホスト設定

/etc/nginx/conf.d/virtual.conf
server {
listen       80;
server_name  kurumi.560days.com;
location ~ .*\.(htm|html|jpg|JPG|gif|GIF|png|PNG|swf|SWF|css|CSS|js|JS|inc|INC|ico|ICO) {
root    /var/www/kurumi;
index   index.html;
ssi     on;
break;
}
location / {
proxy_pass  http://127.0.0.1:8082;
break;
}
}
この設定が正しいかどうかはわかりませんがページを表示できています。しかしリンクがおかしかったので再度見直しました。

再設定

nginxの設定

/etc/nginx/nginx.conf
例:main.560days.comとkurumi.560days.comの設定
upstream backends {
server 127.0.0.1:8082;
}
server {
listen       80;
server_name  main.560days.com;
proxy_set_header    X-Real-IP       $remote_addr;
proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header    Host            $http_host;
proxy_redirect      off;
proxy_max_temp_file_size    0;
location ~ .*\.(htm|html|jpg|JPG|gif|GIF|png|PNG|swf|SWF|css|CSS|js|JS|inc|INC|ico|ICO) {
root    /var/www/main;
index   index.php;
ssi     on;
break;
}
#proxy
location / {
proxy_pass http://backends;
break;
}
error_page   500 502 503 504  /50x.html;
location = /50x.html {
root   html;
}
}
server {
listen       80;
server_name  kurumi.560days.com;
proxy_set_header    X-Real-IP       $remote_addr;
proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header    Host            $http_host;
proxy_redirect      off;
proxy_max_temp_file_size    0;
location ~ .*\.(htm|html|jpg|JPG|gif|GIF|png|PNG|swf|SWF|css|CSS|js|JS|inc|INC|ico|ICO) {
root    /var/www/kurumi;
index   index.php;
ssi     on;
break;
}
#proxy
location / {
proxy_pass http://backends;
break;
}
error_page   500 502 503 504  /50x.html;
location = /50x.html {
root   html;
}
}

nginxのバーチャルホスト設定

/etc/nginx/conf.d/virtual.conf
server {
listen       80;
server_name  kurumi.560days.com;
location ~ .*\.(htm|html|jpg|JPG|gif|GIF|png|PNG|swf|SWF|css|CSS|js|JS|inc|INC|ico|ICO) {
root    /var/www/kurumi;
index   index.html;
ssi     on;
break;
}
location / {
proxy_pass  http://127.0.0.1:2222;
break;
}
}
リンクがおかしいのも直りましたがよくわかりません...。試行錯誤して修正したいと思います。

広告

ブログの維持費に充てるでございます・・・。