0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Nginxでのbasic認証をdocker-composeで設定する

Posted at

はじめに

こんにちは。ponponnsanです。今回は、basic認証をnignxで設定してみました。いずれはSSOでnginx経由から複数サービスへアクセスできるようにしたいです。

経緯

VPNでサービスを展開した際、VPNに繋げてさえいれば、URLにアクセスできてしまう。今回は簡単に対象人数を限定的としたいため、basic認証で入れる人を限定する。

方法

  1. ローカルで、.htpasswdファイルを作成
  2. nginxコンテナにマウント
  3. confにbasic認証の設定を追加

それぞれの手順を詳しくみていきましょう。

ローカルで、.htpasswdファイルを作成

パッケージインストール

ubuntuで操作しています。

sudo apt-get install apache2-utils

.htpasswd ファイルの作成

htpasswd -bc .htpasswd USER USER_PASSWORD
htpasswd -b .htpasswd USER_DEV USER_PASSWORD

オプションコマンドの-bは、パスワードをコマンドラインから入力できます。履歴には残ってしまうようなので、適宜調整してください。私の場合はこっちの方が早いと感じたのでつけています。

-cはユーザーとパスワードが書かれたファイルを新規作成/上書きすることができます。上書きされたくない場合は、-cをとってください。

このような認証ファイルはgit ignoreにして、gitにプッシュすることがないよう気をつけてください。

nginxコンテナにマウント

ローカルで.htpasswdファイルが作成されたら、docker-composeのnginxコンテナにマウントしていきます。

docker-compose.yml
version: '3.9'

services:
  nginx:
    image: nginx:1.24
    container_name: nginx
    networks:
      - network
    volumes:
      - ./nginx-template:/etc/nginx/templates
      - ../.htpasswd:/etc/nginx/.htpasswd #追記

confにbasic認証の設定を追加

nginxの設定を、私はnginx-template/nginx.conf.templateに記載しています。

そして、nginx.conf.templateに先ほどのbasic認証の設定を追記していきます。

nginx.conf.template
server {
   listen ${NGINX_PORT_HTTPS} ssl;
   server_name ${SERVER_ADDRESS};

    location ~ /api {
        auth_basic "Restricted"; #追記
        auth_basic_user_file /etc/nginx/.htpasswd; #追記
        include uwsgi_params;
	    uwsgi_pass unix:///tmp/uwsgi.sock;
        ...
    }

    location /files {
        auth_basic "Restricted"; #追記
        auth_basic_user_file /etc/nginx/.htpasswd; #追記
        alias /var/www/backend/files;
        ...
    }

    error_page   500 502 503 504  /50x.html;

    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

最後に

docker composeを上げ直せば動くと思います。このとき、うまく動かない場合はimageを削除して再度上げなおしてみてください。
.htpasswdファイルは、ローカルで作成するため、共同開発をする際は、各自で作成する必要があります。

参考文献

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?