![[サーバ構築編#8] NginxでBasic認証を設定](/_next/image?url=%2Farticles%2Fserver%2Fhtpasswd%2Fhero.jpg&w=3840&q=75)
サーバ構築編#8NginxでBasic認証を設定
NginxでBasic認証を設定できるように、apache2-utilsをインストールしてhtpasswdコマンドを利用可能に
初回公開日
最終更新日
サーバ構築編第8回は、NginxでBasic認証を利用可能にします。
サイト構築中は、保護できるようにします。
Nginx単体には htpasswd を作成する機能がないので、apache2-utils をインストールして htpasswd コマンドを使えるようにします。
1.apache2-utils をインストール
apache2-utils
は、Apacheに関連する便利なツールが含まれたパッケージです。ただ、Nginxで利用するのはhtpasswd
だけになると思います。bash
1sudo apt update
2sudo apt install apache2-utils -y
これで htpasswd コマンドが使えるようになります。
2.認証用の .htpasswd ファイルを作成
初回
admin
というユーザ名で/etc/nginx/.htpasswd
に登録を行います。bash
1sudo htpasswd -c /etc/nginx/.htpasswd admin
パスワードを2回入力して設定
bash
1New password:
2Re-type new password:
- /etc/nginx/.htpasswd に admin の認証情報が保存されます
- -c オプションは最初にユーザを作成する時だけ(
.htpasswd
を新規作成する)。ユーザを追加する時に-c
をつけると登録済みのユーザが消えてしまうので注意
追加ユーザーを登録(運用時はこれ!)
bash
1sudo htpasswd /etc/nginx/.htpasswd user2
- user2 を追加(-c は不要!)
3.Nginx の設定に Basic 認証を追加
Nginxでは
.htaccess
は使えないため、nginx.conf
や conf.d/*.conf
に直接、Basic認証の設定を書く必要があります。Nginxが
.htaccess
をサポートしない理由- Nginx は .htaccess のような動的設定を嫌う!
- .htaccess を使うと、ディレクトリごとに設定を解析するため、パフォーマンスが低下する!
- そのため、すべての設定を .conf に記述し、一括ロードするのが Nginx の設計方針!
というわけで、
conf
ファイルへBasic認証の設定を追記します。bash
1sudo vi /etc/nginx/conf.d/example.com.conf
サイト全体に認証をかける場合
bash
1server {
2 server_name example.com;
3
4# Basic認証
5 auth_basic "Restricted Area"; # <-認証プロンプトのタイトル
6 auth_basic_user_file /etc/nginx/.htpasswd; # <-認証ファイルのパス
7##
8
9 root /var/www/example.com/html;
10 index index.html;
11
12 location / {
13 try_files $uri $uri/ =404;
14 }
15
16 listen 443 ssl; # managed by Certbot
17 ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
18 ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot
19 include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
20 ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
21
22}
特定のディレクトリだけに認証をかける場合
bash
1server {
2 server_name example.com;
3
4 root /var/www/example.com/html;
5 index index.html;
6
7 location / {
8 try_files $uri $uri/ =404;
9 }
10
11 # /test 配下を Basic 認証
12 location /test {
13 auth_basic "Restricted Area"; # 認証プロンプトのメッセージ
14 auth_basic_user_file /etc/nginx/.htpasswd;
15 }
16
17 listen 443 ssl; # managed by Certbot
18 ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
19 ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot
20 include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
21 ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
22
23}
毎度、認証設定を
conf
ファイルに追加しないといけないのは、少し不便ですが、慣れていくしかさなそうです。4. Nginx の設定をチェック & 再起動
Nginxの構文チェックを行なって、再起動を実施します。
bash
1sudo nginx -t
bash
1sudo systemctl restart nginx
- https://example.com(特定のディレクトリだけに設定した場合はそのディレクトリ) にアクセスして、Basic認証が求められればOK
5. まとめ
- htpasswd で /etc/nginx/.htpasswd を作成し、ユーザーを登録!
- auth_basic を Nginx の location /admin に設定して、Basic 認証を適用!
- nginx -t で設定チェック&systemctl restart nginx で適用!
- ブラウザでアクセスし、Basic 認証が動作することを確認!
続きはこちら...
前回の確認はこちら...
この記事の執筆・編集担当
DE
松本 孝太郎
DELOGs編集部/中年新米プログラマー
ここ数年はReact&MUIのフロントエンドエンジニアって感じでしたが、Next.jsを学んで少しずつできることが広がりつつあります。その実践記録をできるだけ共有していければと思っています。
▼ 関連記事
[サーバ構築編#2] さくらクラウドでPostgreSQLのアプライアンスDBを作る
運用が楽々なアプライアンス「データベース」でPostgreSQL環境を作成
2025/6/20公開
![[サーバ構築編#2] さくらクラウドでPostgreSQLのアプライアンスDBを作るのイメージ](/_next/image?url=%2Farticles%2Fserver%2Fsakura-cloud-db%2Fhero-thumbnail.jpg&w=1200&q=75)
[サーバ構築編#3] Ubuntu初期設定-ユーザ作成とSSH接続の強化
SSHでサーバへ接続して、Ubuntu Server 24.04.1LTSの主にユーザ作成とSSH接続の強化
2025/6/20公開
![[サーバ構築編#3] Ubuntu初期設定-ユーザ作成とSSH接続の強化のイメージ](/_next/image?url=%2Farticles%2Fserver%2Fubuntu-user-ssh%2Fhero-thumbnail.jpg&w=1200&q=75)
[サーバ構築編#4] Ubuntu初期設定-日本語化
Ubuntu Server 24.04.1LTSの言語設定の日本語化とシステム時間の日本時間ゾーン設定
2025/6/20公開
![[サーバ構築編#4] Ubuntu初期設定-日本語化のイメージ](/_next/image?url=%2Farticles%2Fserver%2Fubuntu-locale%2Fhero-thumbnail.jpg&w=1200&q=75)
[サーバ構築編#5] Ubuntu初期設定-アプライアンスDB(PostgreSQL 13)との接続設定
Webサーバのイーサネット設定を行いローカルスイッチとアプライアンスDBのPostgreSQL 13へのアクセスを可能に
2025/6/20公開
![[サーバ構築編#5] Ubuntu初期設定-アプライアンスDB(PostgreSQL 13)との接続設定のイメージ](/_next/image?url=%2Farticles%2Fserver%2Fubuntu-ethernets%2Fhero-thumbnail.jpg&w=1200&q=75)
[サーバ構築編#1] さくらクラウドでUbuntuサーバのインスタンスを作る
コントロールパネルからサクッとUbuntuサーバのインスタンスを作成
2025/6/20公開
![[サーバ構築編#1] さくらクラウドでUbuntuサーバのインスタンスを作るのイメージ](/_next/image?url=%2Farticles%2Fserver%2Fsakura-cloud-server%2Fhero-thumbnail.jpg&w=1200&q=75)