본문 바로가기

리눅스

Nginx에서 특정 IP 주소를 제한하는 방법

728x90

Nginx에서 특정 IP 주소를 제한하는 방법

Nginx를 사용하여 특정 IP 주소를 제한하려면 Nginx의 설정 파일에 접근 제어 규칙을 추가해야 합니다.

1. nginx 설정 파일 열기

  • nginx의 설정 파일은 일반적으로 /etc/nginx/nginx.conf 또는 /etc/nginx/sites-available/default와 같은 위치에 있습니다.

2. 허용하거나 거부할 IP 주소 지정

  • 다음과 같은 형식으로 허용하거나 거부할 IP 주소를 지정합니다
allow [IP 주소];
deny [IP 주소];
  • 여러 IP 주소를 지정하려면 각각의 IP 주소를 세미콜론으로 구분합니다.

3. nginx server 블록에 IP 주소 지정

  • 허용하거나 거부할 IP 주소를 지정한 후, nginx server 블록에 해당 IP 주소를 지정합니다.
  • 예를 들어, 다음과 같이 server 블록을 수정할 수 있습니다
server {
	listen 80;
	server_name example.com;
	allow 192.168.1.1;
	deny all;
}
  • 여러 IP 주소를 허용하려면 다음과 같이 설정할 수 있습니다
location / {
    allow 192.168.1.100;
    allow 203.0.113.0/24;  # 범위를 지정할 수도 있습니다.
    deny all;
}

4. 설정 파일 저장 및 nginx 서비스 재시작

  • 설정 파일을 저장한 후, nginx 서비스를 재시작합니다.
  • Ubuntu에서는 다음과 같은 명령어를 사용할 수 있습니다
sudo nginx -t
sudo systemctl restart nginx

위의 단계를 따라하면 nginx에서 특정 IP 주소를 제한할 수 있습니다.

728x90

특정 IP 주소 대역에서만 액세스를 허용하도록 구성하고 나머지는 모두 거부

# www.sangchul.kr
server {
    listen 80;
    server_name www.sangchul.kr;
    return 301 https://$host$request_uri;
}

# Settings for a TLS enabled server.
server {
    listen 443 ssl http2;
    server_name www.sangchul.kr;
..
    ###Temporary usage setting
    error_page 403 /403.html;
        location = /403.html {
        internal;
        return 301 https://www.sangchul.kr;
    }

    allow 192.168.1.0/24;
    allow 192.168.4.0/24;
    allow 192.168.15.0/24;
    allow 192.168.19.0/24;
    deny all;
}

이 설정은 www.sangchul.kr 도메인으로 들어오는 HTTP 요청을 HTTPS로 리다이렉트하며 HTTPS 요청에 대한 설정도 함께 포함하고 있습니다.  

 

  • HTTP 요청을 HTTPS로 리다이렉트
    • listen 80 : 80번 포트에 대한 설정 즉 HTTP 요청을 처리하기 위한 설정입니다.
    • server_name www.sangchul.kr : 이 설정이 적용되는 도메인입니다.
    • return 301 https://$host$request_uri; : HTTP 요청을 HTTPS로 리다이렉트하기 위한 설정입니다. $host 변수는 현재 호스트의 이름을 의미하며 $request_uri는 현재 요청된 URI를 의미합니다.
  • HTTPS 요청에 대한 설정
    • listen 443 ssl http2 : 443번 포트에 대한 설정 즉 HTTPS 요청을 처리하기 위한 설정입니다. ssl은 SSL 인증서를 사용하겠다는 의미이며 http2는 HTTP/2 프로토콜을 사용하겠다는 의미입니다.
    • server_name www.sangchul.kr : 이 설정이 적용되는 도메인입니다.
    • error_page 403 /403.html; : 403 Forbidden 오류가 발생했을 때 사용자에게 보여줄 페이지를 설정합니다.
    • location = /403.html {internal; return 301 https://www.sangchul.kr;} : /403.html 경로에 대한 설정입니다. internal은 이 경로가 내부적으로 사용되는 경로임을 나타내며, return 301 https://www.sangchul.kr;는 403 오류가 발생했을 때 리다이렉트할 페이지를 설정합니다.
    • allow 192.168.1.0/24; allow 192.168.4.0/24; allow 192.168.15.0/24; allow 192.168.19.0/24; deny all; : 위에서 설정한 HTTPS 서버에 접근할 수 있는 IP 주소 대역을 설정합니다. allow는 허용할 IP 주소 대역을 설정하며 deny all은 나머지 모든 IP 주소에 대한 접근을 거부합니다.

 

728x90

'리눅스' 카테고리의 다른 글

[리눅스] whereis 명령어  (0) 2023.03.30
which 명령어  (0) 2023.03.30
웹서버의 동시 접속자 수(동접자)  (0) 2023.03.24
[리눅스] siege 명령어  (0) 2023.03.24
[리눅스] core 파일을 분석하는 방법  (0) 2023.03.24