- 私は韓国人として、日本語の勉強とコンピュータの勉強を同時に行うために、ここに文章を書きます
- 翻訳機の助けを借りて書かれた文章なので、誤りがあるかもしれません
はじめに
現在のプロジェクトで簡単なモニタリングツールとしてNetdataを導入することに決定しましたが、ポート19999が外部に公開される問題がありました。これを解決するために、.htpasswdファイルを使用してNginxを介してNetdataへのアクセスを制限する方法を適用しました。この方法で、認証されたユーザーのみがNetdataダッシュボードにアクセスできるように設定しました。
導入方法
apache2-utilsパッケージのインストール
sudo apt update
sudo apt install apache2-utils
まず、Netdataダッシュボードへのアクセスを制限するために.htpasswdファイルを作成する必要があります。そのためには、apache2-utilsパッケージをインストールする必要があります。
htpasswdの使用方法
htpasswd -c .htpasswd {id}
任意の場所に任意の名前でhtpasswdコマンドを使用してファイルを作成します。
Nginx設定を通じて認証を適用
nginx:
image: nginx:latest
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf:ro
- certbot_conf:/etc/letsencrypt
- certbot_www:/var/www/certbot
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
+ - ./.htpasswd:/etc/nginx/.htpasswd:ro
environment:
- TZ=Asia/Seoul
command: "/bin/sh -c 'while :; do sleep 6h & wait $${!}; nginx -s reload; done & nginx -g \"daemon off;\"'"
networks:
- hubo-network
現在、.htpasswdファイルを生成したパスに合わせて、Docker Composeファイルでそのファイルをnginxコンテナにマッピングするために、コンテナ内部の/etc/nginx/.htpasswdパスに読み取り専用でマッピングされるように設定しました。
location /netdata/ {
auth_basic "Administrator's Area";
auth_basic_user_file /etc/nginx/.htpasswd;
proxy_pass http://hubo-netdata:19999/;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_pass_request_headers on;
proxy_set_header Connection "keep-alive";
proxy_store off;
}
Nginx設定ファイルを通じてNetdataダッシュボードへのアクセスを保護するために基本認証を追加し、/netdata/パスへのリクエストをNetdataサービスにプロキシして転送するようにしました。
適用
docker compose up -d --no-deps --force-recreate nginx
適用のためにコンテナを再作成しました。
なぜdocker restartコマンドを使用しないのですか?
docker restartは既存のコンテナを停止して再起動するだけなので、コンテナの設定やファイルシステムに対する変更が適用されません。
コンテナが起動したら、正しくマッピングされているか確認します。
docker exec -it hubo-nginx-1 sh -c "cat /etc/nginx/.htpasswd"
{id}:$apr1$6z/mxy4D$LIQF3E6UluYUZunNnMQd00
次のようにコンテナ内にコピーされた/etc/nginx/.htpasswdを開いて、IDとパスワード(暗号化されたもの)を確認できれば成功です。
確認
success