勉強したことのメモ

webプログラマが勉強したことのメモ。

Nginxで特定のディレクトリに対してBasic認証を設定

   

Nginxで特定のディレクトリに対してBasic認証を設定したい。Apacheだとhtaccess及びhtpasswdファイルをアップロードするだけで設定できたがNginxだとhtaccessが使えない。ではApacheを導入しないといけないのかと思ったがそういう訳ではなく、割と簡単に設定する方法があった。以下に対応方法をメモ。

 

htpasswdファイルの作成

#httpd-toolsのインストール
yum install -y httpd-tools

#Basic認証用のユーザを登録(test_user部分は適宜変更する)
htpasswd -c /etc/nginx/.htpasswd test_user

上記でユーザ登録をするとパスワードを聞かれるので適宜入力する。

 

Nginx設定

#設定ファイルを編集
vi /etc/nginx/conf.d/default.conf

#以下をBasic認証をかけたいドメイン部分のserver{}内に追記する。またpass部分はBasic認証をかけたいディレクトリ名になる。
location /pass/ {
    auth_basic "Auth";
    auth_basic_user_file "/etc/nginx/.htpasswd";
    location ~ \.php$ {
        root /usr/share/nginx/html;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

#構文チェック
nginx -t

#nginx再起動
systemctl restart nginx

再起動後に該当ディレクトリにアクセスすると認証状況が確認できる。尚、location ~ \.php${}が無いと、「https://test.com/pass/」ディレクトリ自体にはBasic認証はかかるものの「https://test.com/pass/test.php」のようなページを開いてもBasic認証が聞かれないので注意する。

 

所感

Basic認証の都度、SSH接続してNginxの設定ファイルを編集するというのは多少手間に感じた。とはいえApacheでもhtaccessファイルを利用するのは推奨していないっぽいのでこの辺りの意識は変えていかないといけないのかも。

 

参考サイト

https://www.t3a.jp/blog/infrastructure/nginx-basic-auth/

 - Nginx, サーバー

  関連記事

logrotate

先輩とサーバー会社とのやり取りで、 「負荷の少ない時間帯にサーバー状況がホニャラ ...

サーバー監視はNew Relicが楽に導入できて便利

サーバー監視はNew Relicが楽に導入できて便利だった。 メモリ使用率やCP ...

サーバーのCPU使用率を調べる(top)

サーバーのCPU使用率を調べる際は teratermでログインして、 top と ...

pearのインストール状況を確認

pearがインストールされているのかどうか調べたかった。 pear versio ...

iPhoneでSSH接続するアプリ

iPhoneでSSHクライアントアプリを使用する必要があった。以下に経緯等のメモ ...

gzip圧縮とキャッシュをhttpd.confで設定する

今まで共用サーバーで使っていたWordPressをVPSに移した。 せっかくなの ...

yumで既にインストールされているか確認する

新しくインストールする前に既に入っているか どうか確認したかった。 yum li ...

SSHのセキュリティ設定

SSHのセキュリティ設定をする事があった。設定内容は指示を貰えたので作業自体は問 ...

サーバーのメモリー使用状況を調べる(free)

サーバーのメモリー使用状況を調べる際は teratermでログインして、 fre ...

suとsu -の違い

スーパーユーザーになる際にsuだけ打っていたけど su -の方がいろいろ出来るか ...