Nginxのバーチャルホスト設定とLet's Encryptの導入
2024/02/22
NginxでVirtualHostの設定し、複数のドメインを同一サーバに割り当てたい。また、Virtual Host設定したドメインに対してLet's Encryptを導入し、SSL対応したい。あとドメイン毎にaccess_logやerror_logを個別に出力させたい。以下に設定方法をメモ。
バーチャルホスト設定
#設定ファイルを編集 vi /etc/nginx/conf.d/default.conf #以下を追記する(hoge.com部分は適宜変更する) server { listen 80; server_name hoge.com; access_log /var/log/nginx/hoge.com.access.log main; error_log /var/log/nginx/hoge.com.error.log; location / { root /usr/share/nginx/html/hoge.com; index index.php; } location ~ \.php$ { root /usr/share/nginx/html/hoge.com; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
バーチャルホスト毎にserver{}で囲って設定していくみたい。
尚、設定ファイルを編集後はすぐにNginxを再起動せずに以下で構文チェックが行えるとのこと。今後は必ず構文チェック後に再起動をかけるようにする。
#構文チェック nginx -t #以下が表示されるとOK nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful #nginx再起動 systemctl restart nginx
Let's Encryptインストール
#証明書インストールのテスト(hoge.com部分は適宜変更する) certbot certonly --webroot -w /usr/share/nginx/html/hoge.com -d hoge.com --email test@hoge.com --dry-run #問題無ければ証明書インストール certbot certonly --webroot -w /usr/share/nginx/html/hoge.com -d hoge.com --email test@hoge.com
Nginx設定ファイル再編集
#設定ファイルを編集 vi /etc/nginx/conf.d/default.conf #先ほどバーチャルホストしたserver{}内のlisten80の下あたりに以下を追記 listen 443 ssl; ssl_certificate /etc/letsencrypt/live/hoge.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/hoge.com/privkey.pem;
上記設定後、念のため構文チェックを行ってからNginxを再起動する。この時点でhttpsでのアクセスが可能となる。
所感
ApacheよりもNginxの設定ファイルの方が直感的で分かりやすいような気がする。後は今回とは別件だけどNginxはhtaccessが使えないらしいので、Basic認証やリダイレクトをどうするのか勉強しておきたいところ。
参考サイト
関連記事
-
CentOS7系にLEMP環境(Linux + Nginx + MySQL + PHP)を構築
先日KAGOYAのVPSからIndigoに移行した際にCentOS6から7へバー ...