6回目-9.Nginxでバーチャルホスト設定

さくらVPSCentOS 7 2週間無料のお試し期間 6回目

 状態:-  閲覧数:459  投稿日:2018-02-13  更新日:2018-02-13
Nginxでバーチャルホスト設定

ブラウザ経由で「a.w4c.work」へアクセスした際には「a」と表示されることを期待したが、実際に試すと「hoge」と表示されてしまう

 閲覧数:119 投稿日:2018-02-13 更新日:2018-02-15 
$ sudo -s
[sudo] password for ★★:

# mkdir -p /var/www/html/w4c.work/a.w4c.work
# chown -R ★★:★★ /var/www/html/w4c.work/a.w4c.work
# vi /var/www/html/w4c.work/a.w4c.work/index.php
<?php echo 'a'; ?>


# mkdir -p /etc/nginx/conf.d/w4c.work    
                                                     
# chown -R ★★:★★ /etc/nginx/conf.d/w4c.work
# vi /etc/nginx/conf.d/w4c.work/a.w4c.work.conf
server {
 server_name a.w4c.work;
 location / {
   root   /var/www/html/w4c.work/a.w4c.work;
   index  index.php index.html index.htm;
 }
}


# systemctl restart nginx.service
ブラウザでアクセス
hoge


デフォルトconfに戻す

 閲覧数:145 投稿日:2018-02-13 更新日:2018-02-13 
# cd /etc/nginx/conf.d
# ls -la
合計 12
drwxr-xr-x 3 root       root         63  2月 13 11:16 .
drwxr-xr-x 3 root       root       4096  2月 11 13:41 ..
-rw-r--r-- 1 root       root       1093 10月 17 22:21 default.20180212
-rw-r--r-- 1 root       root       1553  2月 12 13:09 default.conf
drwxr-xr-x 2 ★★ ★★   28  2月 13 11:16 w4c.work

# mv default.conf default.1_20180212
                                                           
# mv default.20180212 default.conf  
                                                         
# ls -la  
                                                                                     
合計 12
drwxr-xr-x 3 root       root         65  2月 13 11:26 .
drwxr-xr-x 3 root       root       4096  2月 11 13:41 ..
-rw-r--r-- 1 root       root       1553  2月 12 13:09 default.1_20180212
-rw-r--r-- 1 root       root       1093 10月 17 22:21 default.conf
drwxr-xr-x 2 ★★ ★★   28  2月 13 11:16 w4c.work


# systemctl restart nginx.service



ブラウザでアクセス
・IPアドレス
・http://a.w4c.work/
・http://www.w4c.work/
Welcome to nginx!


default.conf がなければいいんじゃね?

 閲覧数:119 投稿日:2018-02-13 更新日:2018-02-13 
# mv default.conf default.0_20180212
# ls -la      
                                                                                 
合計 12
drwxr-xr-x 3 root       root         71  2月 13 11:36 .
drwxr-xr-x 3 root       root       4096  2月 11 13:41 ..
-rw-r--r-- 1 root       root       1093 10月 17 22:21 default.0_20180212
-rw-r--r-- 1 root       root       1553  2月 12 13:09 default.1_20180212
drwxr-xr-x 2 ★★ ★★   28  2月 13 11:16 w4c.work



# systemctl restart nginx.service  

ブラウザでアクセス
・IPアドレス
・http://a.w4c.work/
・http://www.w4c.work/
このサイトにアクセスできません




ここからまたもや迷走開始

 閲覧数:134 投稿日:2018-02-13 更新日:2018-02-13 
ここからまたもや迷走開始
・メモ取れないほどの混乱レベル
・片っ端から色々なことを試しては失敗の繰り返し


途中で気が付いたこと


include /etc/nginx/conf.d
・「/etc/nginx/conf.d/default.conf」で明示的に追加指定しなくてもデフォルトで「conf.d/*.conf」は読み込まれる
・なぜなら既に「/etc/nginx/nginx.conf」で記述されているから


現状の問題点



・バーチャルドメイン出来ない
・全て同じサイトが表示されるか、全く表示されないかの2択
・原因は全くの不明

ヒントとなったのは下記サイト
Nginxで複数ドメインに対応する
この設定ファイルを複数作るだけ
・但しコピペしても、期待した動作とはならなかった

考え方だけ借用
・要は、「/etc/nginx/conf.d/default.conf」が正常動作出来ていることが確認出来ているのなら、これを最低限変更したものを、「/etc/nginx/conf.d/」直下に「.conf」ファイルとして配置すれば良いんじゃね? というもの

最低限の動作確認できたもの

 閲覧数:120 投稿日:2018-02-13 更新日:2018-02-13 

サイトa


index.phpファイル作成
$ sudo -s
[sudo] password for ★★:

# mkdir -p /var/www/html/w4c.work/a.w4c.work
# chown -R ★★:★★ /var/www/html/w4c.work/a.w4c.work
# vi /var/www/html/w4c.work/a.w4c.work/index.php
<?php echo 'a'; ?>


設定ファイル作成
# cd /etc/nginx/conf.d
# vi a.conf
server {
   listen       80;
   server_name  a.w4c.work;
   root   /var/www/html/w4c.work/a.w4c.work;
   index  index.php index.html index.htm;
   #charset koi8-r;
   #access_log  /var/log/nginx/host.access.log  main;

   location / {
       #root   /usr/share/nginx/html;
       #index  index.html index.htm;
       try_files $uri $uri/ /index.php?$query_string;
   }

   #error_page  404              /404.html;

   # redirect server error pages to the static page /50x.html
   #
   error_page   500 502 503 504  /50x.html;
   location = /50x.html {
       root   /usr/share/nginx/html;
   }

   # proxy the PHP scripts to Apache listening on 127.0.0.1:80
   #
   #location ~ \.php$ {
   #    proxy_pass   http://127.0.0.1;
   #}

   # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
   #
   #location ~ \.php$ {
   #    root           html;
   #    fastcgi_pass   127.0.0.1:9000;
   #    fastcgi_index  index.php;
   #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
   #    include        fastcgi_params;
   #}

   # deny access to .htaccess files, if Apache's document root
   # concurs with nginx's one
   #
   #location ~ /\.ht {
   #    deny  all;
   #}

   location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        include fastcgi_params;
   }

}


Nginx再起動
・「.confファイル」設定変更を反映
# systemctl restart nginx.service

ブラウザで確認
・http://a.w4c.work/
a

サイトb


index.phpファイル作成
# mkdir -p /var/www/html/w4c.work/b.w4c.work
# chown -R ★★:★★ /var/www/html/w4c.work/b.w4c.work
# vi /var/www/html/w4c.work/b.w4c.work/index.php
<?php echo 'b'; ?>


設定ファイル作成
# cd /etc/nginx/conf.d
# vi b.conf
server {
   listen       80;
   server_name  b.w4c.work;
   root   /var/www/html/w4c.work/b.w4c.work;
   index  index.php index.html index.htm;
   #charset koi8-r;
   #access_log  /var/log/nginx/host.access.log  main;

   location / {
       #root   /usr/share/nginx/html;
       #index  index.html index.htm;
       try_files $uri $uri/ /index.php?$query_string;
   }

   #error_page  404              /404.html;

   # redirect server error pages to the static page /50x.html
   #
   error_page   500 502 503 504  /50x.html;
   location = /50x.html {
       root   /usr/share/nginx/html;
   }

   # proxy the PHP scripts to Apache listening on 127.0.0.1:80
   #
   #location ~ \.php$ {
   #    proxy_pass   http://127.0.0.1;
   #}

   # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
   #
   #location ~ \.php$ {
   #    root           html;
   #    fastcgi_pass   127.0.0.1:9000;
   #    fastcgi_index  index.php;
   #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
   #    include        fastcgi_params;
   #}

   # deny access to .htaccess files, if Apache's document root
   # concurs with nginx's one
   #
   #location ~ /\.ht {
   #    deny  all;
   #}

   location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        include fastcgi_params;
   }

}


Nginx再起動
・「.confファイル」設定変更を反映
# systemctl restart nginx.service

ブラウザで確認
・http://b.w4c.work/
b

その他


ブラウザで確認
・http://IPアドレス/
a
・http://www.w4c.work/
a
※この仕組が分からない

NEXT

 閲覧数:103 投稿日:2018-02-13 更新日:2018-02-13 
現状確認出来ていること
/etc/nginx/conf.d/w4c.work/a.w4c.work.conf
/etc/nginx/conf.d/w4c.work/b.w4c.work.conf

これから確認
/etc/nginx/conf.d/w4c.work/a.w4c.work.conf

・もしだめな場合は、「/etc/nginx/nginx.conf」で明示的にinclude指定しなければいけないのかも
[PHP+NGINX+PHP-FPM] centos 7.2にPHP7.1開発環境を構築する方法


デフォルト設定は必要
・「指定ドメイン以外」という切り分けは欲しい

▼★.conf
fastcgi_pass 127.0.0.1:9000;





デフォルト設定では、「/etc/nginx/conf.d/*/*.conf」は読み込まれないことを確認

 閲覧数:129 投稿日:2018-02-14 更新日:2018-02-14 
$ cd /etc/nginx/conf.d/
$ ls -la
合計 20
drwxr-xr-x 3 root       root         91  2月 13 12:16 .
drwxr-xr-x 3 root       root       4096  2月 11 13:41 ..
-rw-r--r-- 1 root       root       1566  2月 13 12:14 a.conf
-rw-r--r-- 1 root       root       1566  2月 13 12:16 b.conf
-rw-r--r-- 1 root       root       1093 10月 17 22:21 default.0_20180212
-rw-r--r-- 1 root       root       1553  2月 13 12:02 default.conf
drwxr-xr-x 2 ★★ ★★   28  2月 13 12:08 w4c.work

$ sudo -s
                                                                                                                   
[sudo] password for ★★: 

# mv a.conf a_20180214       
                                                                                                     
# ls -la     
                                                                                                                    
合計 20
drwxr-xr-x 3 root       root         95  2月 14 10:21 .
drwxr-xr-x 3 root       root       4096  2月 11 13:41 ..
-rw-r--r-- 1 root       root       1566  2月 13 12:14 a_20180214
-rw-r--r-- 1 root       root       1566  2月 13 12:16 b.conf
-rw-r--r-- 1 root       root       1093 10月 17 22:21 default.0_20180212
-rw-r--r-- 1 root       root       1553  2月 13 12:02 default.conf
drwxr-xr-x 2 ★★ ★★   28  2月 13 12:08 w4c.work


# rm -rf w4c.work
# ls -la
                                                                                                                         
合計 20
drwxr-xr-x 2 root root   80  2月 14 10:24 .
drwxr-xr-x 3 root root 4096  2月 11 13:41 ..
-rw-r--r-- 1 root root 1566  2月 13 12:14 a_20180214
-rw-r--r-- 1 root root 1566  2月 13 12:16 b.conf
-rw-r--r-- 1 root root 1093 10月 17 22:21 default.0_20180212
-rw-r--r-- 1 root root 1553  2月 13 12:02 default.conf

# mkdir w4c.work  
                                                                                                               
# ls -la
合計 20
drwxr-xr-x 3 root root   95  2月 14 10:25 .
drwxr-xr-x 3 root root 4096  2月 11 13:41 ..
-rw-r--r-- 1 root root 1566  2月 13 12:14 a_20180214
-rw-r--r-- 1 root root 1566  2月 13 12:16 b.conf
-rw-r--r-- 1 root root 1093 10月 17 22:21 default.0_20180212
-rw-r--r-- 1 root root 1553  2月 13 12:02 default.conf
drwxr-xr-x 2 root root    6  2月 14 10:25 w4c.work


「/etc/nginx/conf.d/w4c.work/a.conf」作成


# vi w4c.work/a.conf  
server {
   listen       80;
   server_name  a.w4c.work;
   root   /var/www/html/w4c.work/a.w4c.work;
   index  index.php index.html index.htm;
   #charset koi8-r;
   #access_log  /var/log/nginx/host.access.log  main;

   location / {
       #root   /usr/share/nginx/html;
       #index  index.html index.htm;
       try_files $uri $uri/ /index.php?$query_string;
   }

   #error_page  404              /404.html;

   # redirect server error pages to the static page /50x.html
   #
   error_page   500 502 503 504  /50x.html;
   location = /50x.html {
       root   /usr/share/nginx/html;
   }

   # proxy the PHP scripts to Apache listening on 127.0.0.1:80
   #
   #location ~ \.php$ {
   #    proxy_pass   http://127.0.0.1;
   #}

   # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
   #
   #location ~ \.php$ {
   #    root           html;
   #    fastcgi_pass   127.0.0.1:9000;
   #    fastcgi_index  index.php;
   #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
   #    include        fastcgi_params;
   #}

   # deny access to .htaccess files, if Apache's document root
   # concurs with nginx's one
   #
   #location ~ /\.ht {
   #    deny  all;
   #}

   location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        include fastcgi_params;
   }

}

Nginx再起動
・「.confファイル」設定変更を反映
# systemctl restart nginx.service

ブラウザで確認
・http://a.w4c.work/
・http://b.w4c.work/
・http://www.w4c.work/
・http://IPアドレス/
b


「/etc/nginx/conf.d/*/*.conf」が読み込まれるよう、「/etc/nginx/nginx.conf」を変更

 閲覧数:146 投稿日:2018-02-14 更新日:2018-02-14 

「/etc/nginx/nginx.conf」現状


# cat /etc/nginx/nginx.conf
user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
   worker_connections  1024;
}


http {
   include       /etc/nginx/mime.types;
   default_type  application/octet-stream;

   log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                     '$status $body_bytes_sent "$http_referer" '
                     '"$http_user_agent" "$http_x_forwarded_for"';

   access_log  /var/log/nginx/access.log  main;

   sendfile        on;
   #tcp_nopush     on;

   keepalive_timeout  65;

   #gzip  on;

   include /etc/nginx/conf.d/*.conf;

}


「/etc/nginx/nginx.conf」変更


# vi /etc/nginx/nginx.conf
・「include /etc/nginx/conf.d/w4c.work/*.conf;」を追記
    include /etc/nginx/conf.d/*.conf;
   include /etc/nginx/conf.d/w4c.work/*.conf;


Nginx再起動
・「.confファイル」設定変更を反映
# systemctl restart nginx.service

ブラウザで確認
・http://a.w4c.work/
a

・http://b.w4c.work/
・http://www.w4c.work/
・http://IPアドレス/
b

動作確認したかっただけなので、元に戻す


# vi /etc/nginx/nginx.conf
・「include /etc/nginx/conf.d/w4c.work/*.conf;」を削除
    include /etc/nginx/conf.d/*.conf;


# rm -rf w4c.work/
# ls -la
合計 20
drwxr-xr-x 2 root root 80 2月 14 10:46 .
drwxr-xr-x 3 root root 4096 2月 14 10:44 ..
-rw-r--r-- 1 root root 1566 2月 13 12:14 a_20180214
-rw-r--r-- 1 root root 1566 2月 13 12:16 b.conf
-rw-r--r-- 1 root root 1093 10月 17 22:21 default.0_20180212
-rw-r--r-- 1 root root 1553 2月 13 12:02 default.conf

# mv a_20180214 a.conf
# ls -la
合計 20
drwxr-xr-x 2 root root 76 2月 14 10:46 .
drwxr-xr-x 3 root root 4096 2月 14 10:44 ..
-rw-r--r-- 1 root root 1566 2月 13 12:14 a.conf
-rw-r--r-- 1 root root 1566 2月 13 12:16 b.conf
-rw-r--r-- 1 root root 1093 10月 17 22:21 default.0_20180212
-rw-r--r-- 1 root root 1553 2月 13 12:02 default.conf


ブラウザで確認
・http://a.w4c.work/
・http://www.w4c.work/
・http://IPアドレス/
a

・http://b.w4c.work/
b


指定ドメイン以外 の振り分け

 閲覧数:117 投稿日:2018-02-14 更新日:2018-02-14 

現状


ブラウザで確認
・http://a.w4c.work/
・http://www.w4c.work/
・http://IPアドレス/
a

・http://b.w4c.work/
b

やりたいこと


ブラウザで確認
・http://a.w4c.work/
a

・http://b.w4c.work/
b

・上記(明示的に指定しているドメイン)以外
・http://www.w4c.work/
・http://IPアドレス/
hoge

仕様


IPアドレスを指定した際に読み込まれるserverディレクティブ
・一番最初に記述されているserverディレクティブとなる

複数ある場合
・どこを最初に読み込むか不明

一番最初に記述されているものではない(複数設定したため一番最初に読み込まれるかどうか分からない)serverディレクティブをデフォルトで読み込まれるように指定するには?
・default_serverを指定すれば良い
server {
   listen       80 default_server;

作業開始


# vi default.conf
・「listen       80」の後に「default_server」追記
server {
   listen       80 default_server;


Nginx再起動
・「.confファイル」設定変更を反映
# systemctl restart nginx.service

ブラウザで確認
・http://a.w4c.work/
a

・http://b.w4c.work/
b

・上記(明示的に指定しているドメイン)以外
・http://www.w4c.work/
・http://IPアドレス/
hoge


Nginx応用編①バーチャルホストを設定する。



6回目-8.IPアドレスではなくドメインでアクセス

6回目-10.Nginxでバーチャルホスト設定確認



週間人気ページランキング / 9-18 → 9-24
順位 ページタイトル抜粋 アクセス数
1 Nginx設定。エラーログレベル | Nginx(Webサーバ) 17
2 PHP実行ユーザ設定 / CentOS6 / Apache | PHP(プログラミング言語) 14
3 9回目-13.MySQL5.7.21設定 | CentOS 7 2週間無料のお試し期間 9回目(さくらVPS) 12
4 PHPのmb_send_mail関数でメール送信できない | メール処理システム 10
5 ImageMagick と imagick の違い | ImageMagick(ソフトウェアスイート) 9
6 さくらVPS0 8
6 tar: これは tar アーカイブではないようです 8
7 manページ日本語表示 | CentOS 7 (CentOS) 7
7 Reached target Shutdown メッセージが表示されたあと、シャットダウンまたは再起動プロセスがハングアップする | CentOS 7 (CentOS) 7
8 ABRT により 問題が検出されました | CentOS 7 (CentOS) 6
8 PHPファイルでchmodエラー | PHP(プログラミング言語) 6
8 「設定ファイルに、暗号化 (blowfish_secret) 用の非公開パスフレーズの設定を必要とするようになりました。」対応 6
8 Python 3.5 アンインストール / yum remove | Python(プログラミング言語) 6
9 FFmpeg 2.8.15 を yum インストール | ソフトウェアスイート 5
9 echo と cat の違い 5
10 phpMyAdmin 4.4.3(phpMyAdmin) カテゴリー 4
10 6回目-10.Nginxでバーチャルホスト設定確認 | CentOS 7 2週間無料のお試し期間 6回目(さくらVPS) 4
10 「さくらVPS」で、「CentOS6」を「CentOS7」へ変更するためには? | CentOS 7 2週間無料のお試し期間 Link(さくらVPS) 4
10 cronで定期実行しているphpファイルを、コマンドライン経由で即時実行する | cron(Linuxコマンド) 4
10 MySQL 5.5 から 5.6 へのアップグレード | MySQL(データベース) 4
2021/9/25 1:01 更新