nginxでは、apacheのVirtualhostと同じ様に、 1つのサーバー内で複数のサーバがあるように見せる設定 が可能です。
基本的には、httpディレクティブの中に複数のserverディレクティブを記述すればOKです。
複数のサイト管理する際には、サイトごとにファイルを分けたほうがよいです。
Nginxをインストールした際、デフォルトでserverディレクティブの設定が行われています。
Nginxのメイン設定ファイルは/etc/nginx/nginx.conf
です。
このnginx.conf
内では、httpブロック内でinclude/etc/nginx/sitesenabled/*;
をインクルードしています。
このsitesenabled
は、sites-available/default
のシンボリックリンクとなっています。
shell1ls -li /etc/nginx/sites-enabled/2total 03773067 lrwxrwxrwx 1 root root 34 Feb 14 13:59 default -> /etc/nginx/sites-available/default
/etc/nginx/sites-available/default
内にserver
ブロックの設定が記載されています。
shell1sudo vim /etc/nginx/sites-available/default
text1root /var/www/html;2index index.html index.htm index.nginx-debian.html;3server_name _;
ここのserver_name
の箇所に追記することもできますが、
serverディレクティブに記載する場合、
default
バーチャルホストを設定する別ファイルに追記するほうが管理が楽なため、
default
は利用しません。
/var/www/html/
の下に公開するディレクトリを作成していきます。
shell1cd /var/www/html/2sudo mkdir test.example.com3sudo chown www-data:www-data test.example.com/4sudo chmod 775 test.example.com/5cd test.example.com/6sudo vim index.html
index.html
には適当に文字を記述します。
shell1sudo chown www-data:www-data index.html
インストール時の設定でデフォルトで読み込まれる
/etc/nginx/sites-available/default
内で、Virtual Hostを設定する場合の説明が書いてあります。
text1# Virtual Host configuration for example.com2#3# You can move that to a different file under sites-available/ and symlink that4# to sites-enabled/ to enable it.
sites-available/
の下にサイトごとのファイルを設定ファイルを作成し、
sites-enabled/
の下にシンボリックリンクを作成しましょう。
shell1sudo vim /etc/nginx/sites-available/test.example.com
text1server {2 listen 80;3 listen [::]:80;45 server_name test.example.com;67 root /var/www/html/test.example.com;8 index index.html;910 location / {11 try_files $uri $uri/ =404;12 }13}
shell1cd /etc/nginx/sites-enabled/2sudo ln -s /etc/nginx/sites-available/test.eexample.com test.eexample.com
shell1sudo nginx -t2sudo systemctl restart nginx
ちなみに、sites-enabled
は/etc/nginx/nginx.conf
でincludeされています。
text1include /etc/nginx/sites-enabled/*;