LoginSignup
1
1

More than 3 years have passed since last update.

nginxコンテナを使ってみる②(アクセス制限)

Posted at

nginxでアクセス制限をしてみる。

IPアドレス制限

設定ファイルでdenyまたはallowを定義する。
引数はIPアドレス または allという文字列。
IPドレスはCIDRで範囲指定可能。

deny 172.21.1.1
deny 172.21.0.0/16
allow all

さっそく設定ファイルをいじってみる。

コンテナ起動
[ec2-user]$ docker container run -d -p 80:80 --name nginx nginx:latest
2a01374534f5997dd2b44a8422b63eccff0d6a1ce21b82aa6f6dc3b10928de89
[ec2-user]$
[ec2-user]$ docker container ls -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
2a01374534f5        nginx:latest        "/docker-entrypoint.…"   4 seconds ago       Up 3 seconds        80/tcp              nginx
[ec2-user]$
設定ファイル修正
root@6775ebb4074c:~# vi /etc/nginx/nginx.conf
bash: vi: command not found
root@6775ebb4074c:~#

viが入っていない、、入れるか。

yumも入っていない
root@6775ebb4074c:~# yum install -y vim
bash: yum: command not found
root@6775ebb4074c:~#

yumも入ってない、、う~ん。

面倒になってきたので
ホスト側に設定ファイルをコピーしてきて
修正したのちコンテナ内に戻すことにした。

気を取り直して
まずは以下を設定ファイルに追加してみる。

deny all;

設定ファイルコピー(ホスト←コンテナ)
[ec2-user]$ docker container cp nginx:/etc/nginx/nginx.conf .
[ec2-user]$
設定ファイル修正
vi nginx.conf

~~ 前略 ~~

http {
    deny all;
    include       /etc/nginx/mime.types;

~~ 後略 ~~
設定ファイルコピー(ホスト→コンテナ)
[ec2-user]$ docker container cp ./nginx.conf nginx:/etc/nginx/nginx.conf
[ec2-user]$
設定ファイルのエラーチェック
[ec2-user]$ docker container exec nginx /bin/bash -c "nginx -t"
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[ec2-user]$
コンテナ再起動
[ec2-user]$ docker container restart nginx
nginx
[ec2-user]$ docker container ls -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
2a01374534f5        nginx:latest        "/docker-entrypoint.…"   10 minutes ago      Up 5 seconds        80/tcp              nginx
[ec2-user]$

ブラウザアクセス

image.png

たしかに拒否された。

allow IPアドレス;

allowで許可設定を行う。
allowやdenyを複数書いた場合は最初に該当したものが適用される。

せっかくなのでdeny allは残したまま
その前にallowを追加してみる。

設定ファイル修正
vi nginx.conf

~~ 前略 ~~

http {
    allow xx.xx.xx.xx;
    deny all;
    include       /etc/nginx/mime.types;

~~ 後略 ~~
設定ファイルコピー(ホスト→コンテナ)
[ec2-user]$ docker container cp ./nginx.conf nginx:/etc/nginx/nginx.conf
[ec2-user]$
設定ファイルのエラーチェック
[ec2-user]$ docker container exec nginx /bin/bash -c "nginx -t"
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[ec2-user]$
コンテナ再起動
[ec2-user]$ docker container restart nginx
nginx
[ec2-user]$ docker container ls -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
2a01374534f5        nginx:latest        "/docker-entrypoint.…"   28 minutes ago      Up 4 seconds        80/tcp              nginx
[ec2-user]$

ブラウザアクセス

image.png

想定どおり繋がった。

1
1
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
1
1