以前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
サイト表示の確認。