ngix: インストールと設定 (ubuntu server)
ubuntu server 24.04 でのインストールと設定です
- nginx をインストールして basic 認証を設定する手順
- 設定ファイルや初期ディレクトリの場所など
nginxインストールと起動確認
まずインストールして起動します。
apt update
apt install nginx
systemctl enable nginx
systemctl start nginx
ブラウザで http://[サーバーIP]
にアクセスして
「Welcome to nginx」が出ればインストールOKです。
ファイアウォール(ufw)設定(必要なら)
確認方法
ufw status
ファイアウォールの設定
ufw allow 'Nginx Full'
だけでOKです。
サーバ情報漏洩対策
デフォルトだとサーバヘッダーに「nginx/1.24.0」みたいな情報が出ます。
これを隠しましょう。
- 設定ファイルを編集します。
vi /etc/nginx/nginx.conf
※
http {
ブロック内に次を追加します。
server_tokens off;
- 保存後、nginx再起動
systemctl restart nginx
これでサーババージョンがレスポンスヘッダーから消えます。
Basic認証を設定(認証ユーザーだけアクセス許可)
一般公開を防ぎ、ID/PASS認証したユーザーだけ見れるようにします。
- 認証用パスワードファイルを作成
まず apache2-utils
をインストール(nginxでもこれを使います)。
apt install apache2-utils
次に、認証ファイルを作成(たとえば /etc/nginx/.htpasswd
)
htpasswd -c /etc/nginx/.htpasswd username
※ここで任意のユーザー名とパスワードを設定
(例: ユーザー名をtestuser
とすると、プロンプトが出てパスワード設定できます)
注意: -c
は最初だけつける。2人目以降は不要(上書きされるので)。
- nginx設定に認証設定を追加
サーバの設定ファイル(例: /etc/nginx/sites-available/default
)を編集します。
vi /etc/nginx/sites-available/default
server {}
ブロックの location /
の中に、次を追加します。
location / {
auth_basic "Restricted Content";
auth_basic_user_file /etc/nginx/.htpasswd;
# もともとの設定(例: index.htmlを返す)もここに置く
try_files $uri $uri/ =404;
}
- nginx再起動
systemctl restart nginx
これで、ブラウザアクセス時に
ユーザー名とパスワードの入力を求められるようになります。
##その他(推奨)
プロトタイプでも、できれば最低限以下を入れておくと安心です。
- エラーページ非公開
→ 不要な404ページ情報を出さない - アクセスログ/エラーログの管理
→ 初期はそのままでいいが、将来ログローテーション設定 - SSL(HTTPS)
→ 本格運用ではLet’s EncryptなどでSSL化(プロトタイプなら未対応でもOK)
【まとめ表】
項目 | 内容 |
---|---|
サーバ情報非表示 | server_tokens off; |
Basic認証設定 | .htpasswd 作成+nginx側で認証設定 |
ファイアウォール(任意) | ufw allow 'Nginx Full' |
SSL(本番向け) | Let’s Encryptなど |
ここまでやれば
- 一般ユーザーには非公開
- 認証したユーザーのみアクセス可能
- サーバー情報も外に漏れない
- 軽量&高速
という非常にきれいなプロトタイプ環境が作れます。
nginxの「/」のルートディレクトリはどこか?
Ubuntuで標準インストールしたnginxだと、
デフォルトでは
/var/www/html/
がドキュメントルート(/
に対応するディレクトリ)です。
つまり、ここにファイルを置けばブラウザから直接アクセスできます。
例えば、
/var/www/html/index.html
を置くとhttp://[サーバーのIP]/index.html
でアクセスできる
という流れです。
実際の設定ファイルも確認してみる
設定ファイルはここです。
/etc/nginx/sites-available/default
この中に、たぶんこういう記述があります。
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
try_files $uri $uri/ =404;
}
}
この中の
root /var/www/html;
がまさに、「/にアクセスしたらこのディレクトリを見に行きますよ」という設定になっています。
テストファイルを置く手順
- WinSCPでサーバに接続
/var/www/html/
に移動- そこに例えば
test.html
をアップロード - ブラウザでアクセス確認
例:
- ファイル:
/var/www/html/test.html
- URL:
http://[サーバのIP]/test.html
これでOKです。
注意点
/var/www/html/
にファイルを書き込むには、パーミッションが必要です。- nginxをインストールしたばかりなら、最初に「
index.nginx-debian.html
」というファイルが置かれています。 これは不要なら消してもいいです。
【まとめ】
項目 | 内容 |
---|---|
nginxのルートディレクトリ | /var/www/html/ |
設定ファイル | /etc/nginx/sites-available/default |
ファイル置き方 | WinSCPでアップロード |
ブラウザでアクセス | http://[IP]/ファイル名 |