メモ > サーバ > 各論: エトセトラ > nginxでバーチャルホスト
nginxでバーチャルホスト
nginxでデフォルトのバーチャルホストを設定する方法 - Linux入門 - Webkaru
https://webkaru.net/linux/nginx-default-server/
■前提
refirio.net
でアクセスできるサーバに
test.refirio.net
を追加する
/var/www/vhosts/test/public
を公開ディレクトリにする
■バーチャルホスト設定
$ sudo su -
# mkdir -p /var/www/vhosts/test/public … 公開ディレクトリを作成
# chown nginx. /var/www/vhosts/test
# chmod 775 /var/www/vhosts/test
# chown nginx. /var/www/vhosts/test/public
# chmod 775 /var/www/vhosts/test/public
# vi /var/www/vhosts/test/public/index.php … テストページを作成
■DNS設定
test.refirio.net
の向け先を上記サーバに設定
■最低限の設定例
※未検証
最低限、以下の設定のみで動作するみたい
この場合、default_server を指定した example2.com がデフォルトのホストになる(IPアドレスでアクセスしたときに参照される)
default_server の指定がなければ、最初に指定された example1.com がデフォルトのホストになる
<?php echo shell_exec('hostname') ?>
# vi /etc/nginx/nginx.conf … バーチャルホストの設定を追加(すでにある「server { 〜 }」の設定をもとにするといい)
server {
listen 80;
listen [::]:80;
server_name test.refirio.net;
root /var/www/vhosts/test/public;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
try_files $uri /index.php?$query_string;
auth_basic "Auth";
auth_basic_user_file /var/www/vhosts/test/public/.htpasswd;
}
# redirect server error pages to the static page /40x.html
#
error_page 404 /404.html;
location = /40x.html {
}
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/vhosts/test/public$fastcgi_script_name;
include fastcgi_params;
}
}
# service nginx configtest … 設定ファイルの構文をチェック
# service nginx restart … nginxを再起動
server {
listen 80;
server_name example1.com;
}
server {
listen 80 default_server;
server_name example2.com;
}
server {
listen 80;
server_name example3.com;
}
■ログでバーチャルホストを区別
nginxの場合、log_formatに「$host」を指定することでバーチャルホストを区別できるようになる
このファイル内にある「nginxにレスポンスタイムを記録」内の記述も参照