Ubuntu24.04に導入したnginxをバーチャルホスト化。
概要
Ubuntu24.04にリポジトリを利用して追加したnginxは、apacheのようにバーチャルサイトが最初から備わっていませんでした。
そこで、その設定を施します。
バーチャルサイトの設定ファイル格納ディレクトリの作成
sudo mkdir -p /etc/nginx/sites-available
sudo mkdir -p /etc/nginx/sites-enabled
ls -ld /etc/nginx/sites*
sites-available
とsites-enabled
ディレクトリがあることを確認します。
バーチャルサイト有効化
- ファイルバックアップ
sudo cp -pi /etc/nginx/nginx.conf /path/to/backup/directory/nginx.conf.$(date +%Y%m%d)
任意のバックアップディレクトリを指定します。
- ファイルバックアップ確認
diff -u /path/to/backup/directory/nginx.conf.$(date +%Y%m%d) /etc/nginx/nginx.conf
差分がなければバックアップは成功です。
- ファイル書き換え
sudo sed -i '/http {/a \ include /etc/nginx/sites-enabled/*;' /etc/nginx/nginx.conf
- ファイル書き換え確認
diff -u /path/to/backup/directory/nginx.conf.$(date +%Y%m%d) /etc/nginx/nginx.conf
以下の差分を確認します。
+ include /etc/nginx/sites-enabled/*;
サンプルのhtmlファイルを作る
ファイル格納ディレクトリは自分の環境に合わせます。
sudo -u www-data tee /home/www-data/index.html > /dev/null <<EOL
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Welcome to example.com</title>
</head>
<body>
<h1>Welcome to example.com!</h1>
<p>This is a sample page served by Nginx.</p>
</body>
</html>
EOL
サンプルのバーチャルサイトを作成する
ファイル名やserver_nameは自分の環境に合わせます。
- 設定ファイル作成
sudo tee /etc/nginx/sites-available/sample.conf > /dev/null <<EOL
server {
listen 80;
server_name example.com www.example.com;
root /home/www-data;
index index.html index.htm;
location / {
try_files \$uri \$uri/ =404;
}
# セキュリティ設定
# サーバー情報を隠す
server_tokens off;
# MIMEタイプの設定
include /etc/nginx/mime.types;
default_type application/octet-stream;
# XSS対策
add_header X-Content-Type-Options nosniff;
add_header X-Frame-Options SAMEORIGIN;
add_header X-XSS-Protection "1; mode=block";
# ファイルのアップロードサイズ制限
client_max_body_size 1M;
# ログの設定
access_log /var/log/nginx/example.com.access.log;
error_log /var/log/nginx/example.com.error.log;
}
EOL
設定ファイル有効化
- シンボリックリンク作成
sudo ln -s /etc/nginx/sites-available/sample.conf /etc/nginx/sites-enabled/
- 構文確認
sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
を確認します。
- サービス再起動
sudo systemctl restart nginx.service
これで、バーチャルサイトが設定されました。