nginx 컨테이너를 사용해 본다 ②(액세스 제한)

5257 단어 nginx도커
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]$

브라우저 액세스



확실히 거부되었다.

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]$

브라우저 액세스



예상대로 연결되었다.

좋은 웹페이지 즐겨찾기