ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • nginx proxy manager 특정 IP만 허용
    개발환경/NGINX 2023. 10. 12. 16:34

    잊어버리지 않기 위해 제 관점에서만 적은 메모이므로 이해가 어려워도 너그러운 이해와 참고 부탁드립니다.

    필자는 도커로 adminer ,postgres, react, laravel, nginx proxy manager 컨테이너를 구성했으며,
    adminer 에 대해 개인 IP만 허용하고, 그 외 다른 IP는 차단하고자 하는 상황입니다.

    nginx proxy manager안에 proxy hosts와 Let's Encrypt - Cloudflare 까지 정상적으로 설정하였습니다.

     

    근데 Edit proxy host의 Custom Nginx Configuration에서

    NGINX 보안 설정 코드가 아무리 여러 설정을 해봐도 적용되지 않는 문제가 발생했습니다.

     

    삽질을 계속 했던 화면입니다,,,

     

    그래서, VPS 서버에서 nginx proxy manager 컨테이너에 접속하였습니다.

    docker exec -it (nginxProxyManager컨테이너이름)  /bin/bash

    /data/logs에 proxy-host-숫자_access.log 형식으로 컨테이너 각각의 access log가 저장되고 있습니다..

    cat  proxy-host-숫자_access.log를 보니까 

    172로 시작하는 도커 가상 변동 IPV4 형식으로 

     

    [06/Oct/2023:08:03:21 +0000] - - 401 - GET http  "/" [Client 172로 시작하는 도커 가상 변동 IPV4 형식] [Length 578] [Gzip -] [Sent-to 118.27.26.186] "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36"

     

    위와 같이 아이피 기록이 저장되고 있었다.

     

    그렇습니다. 도커는 실제 IP가 아닌 도커 가상의 변동 아이피로 저장되고 있었습니다.

    그럼 실제 IP로 저장될 수 있게끔 설정을 해주어야 합니다.

    그래서 컨테이너 안에 nginx.conf 파일로 이동해서 (필자는 /etc/nginx/nginx.conf)

    아래와 같이 real_ip_header X-Real-IP를 주석처리하고  real_ip_header  X-Forwarded-For를 추가해주었습니다.


            #real_ip_header X-Real-IP;
            real_ip_header  X-Forwarded-For;
            real_ip_recursive on;


    그 후 /data/logs로 돌아와서 proxy-host-1_access.log를 확인해보니 나의 고정 IPv6 으로 아이피가 변경된 것을 

    변경된 것을 확인할 수 있었다.

     


    [06/Oct/2023:08:03:21 +0000] - - 401 - GET http  "/" [Client 변하지 않는 나의 고정 IPV6 ] [Length 578] [Gzip -] [Sent-to 118.27.26.186] "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36"


    그럼 변하지 않는 나의 고정 IPV6를 .conf파일에 입력해주면 되는 부분이였습니다.


    일반적인 ipv4로 입력하고 싶은데 방법을 모르겠네요,,... 아시는 분은 코멘트 부탁드립니다,,,ㅠㅠ


    저는 1,2,4 에 해당하는 컨테이너가 있는데 저 같은 경우는 4.conf 이였습니다..

    [root@docker:/data/nginx/proxy_host]# ls -al
    total 20
    drwxr-xr-x 2 root root 4096 Oct 12 06:19 .
    drwxr-xr-x 9 root root 4096 Oct 12 05:49 ..
    -rw-r--r-- 1 root root 1344 Oct 12 05:23 1.conf
    -rw-r--r-- 1 root root 1319 Oct 12 05:23 2.conf
    -rw-r--r-- 1 root root 1011 Oct 12 06:19 4.conf


    vi 4.conf 

    를 입력한 후 , location 안에 추가해 주었다.


      location / {

            allow  (ipv6 번호)  # 여기에 추가!!! 내 IPv6 를 입력해준다. 
            deny all;

        # Proxy!
        include conf.d/include/proxy.conf;
      }



    그 후에 nginx -s reload 를 해주고 확인해보았다.

    외부 IP는 차단되고 내 아이피에서는 접속이 가능했습니다!!!!!

    댓글

Designed by Tistory.