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

以前ApacheからNginxへの移行を行ってたけど、バーチャルホストの設定を忘れていたのでnginxの再設定を。

ググって調べると、nginxの設定ファイル(/etc/nginx/nginx.conf or /etc/nginx/conf.d/*.conf)のlistenディレクティブにdefault_serverパラメーターを設定すればバーチャルホストを設定が可能だそうな。この辺はApacheとそんなに差異はないですね。

/var/www/vhosts
とか
/home/user/
といったディレクトリにdocumentがある場合は、
それぞれ読み替えて対応。

ネームベースのバーチャルホストの設定
virtual.confを作成。
# vim /etc/nginx/conf.d/virtual.conf

対象ドメインをサーバブロックにて記述する。

server {
	listen 80;
	server_name example1.com *.example1.com;
	root /var/www/vhosts/example1.com/html;
	index index.html index.htm index.php;
	try_files $uri $uri/ /index.php;
	access_log /var/www/vhosts/example1.com/logs/example1.com.access.log;
	error_log /var/www/vhosts/example1.com/logs/example1.com.log error;
	error_page 500 502 503 504 /50x.html;
	location = /50x.html {
	root /var/www/vhosts/example1.com/html;
}
	# php
	location ~ \.php$ {
		fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
		fastcgi_index index.php;
		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
		include fastcgi_params;
	}
	# cgi
	location ~ \.pl|cgi$ {
		fastcgi_pass 127.0.0.1:9001;
		fastcgi_index index.cgi;
		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
		include /etc/nginx/fastcgi_params;
	}
}
server {
	listen 80;
	server_name example2.com;
	~略
}
server {
	listen 80;
	server_name example3.com;
	~略
}

書式チェック
# /etc/init.d/nginx configtest

errorが出なければ再起動
# /etc/init.d/nginx restart

サイト表示の確認。