Nginx

minkyung·2025년 2월 27일
post-thumbnail

Nginx is a web server that can also be used as a reverse proxy, load balancer, mail proxy and HTTP cache.

또 Nginx

또 Nginx를 만나게 됐다 . . .
전 직장에서 프론트엔드 웹 서버 직접 올려야됐을 때 이후로 처음 만나는건데 지금도 프론트엔드 웹 서버 직접 올리고 proxy 설정해야돼서 복습하고 메모하려고 벨로그 들어왔다.
개발자들이 다 퇴사하고 할 사람이 없을 때 직접 만지게 되는듯 (again)
그냥 이번 기회에 익숙해져야겠다

사내 로드 밸런서 설정 이해하기

사내 서버 개발자분한테 사내 로드 밸런서 구성에 대한 설명을 들었는데 대충 구조는 이해했는데 구체적인, 아니면 몰랐던 부분에 대해서 GPT한테 물어봄

Sophos가 뭐야? Nginx랑 어떻게 연결되어 있는거야?

🧑‍💻 소포스가 하는 역할이 뭐고 ngnix로 어떻게 넘기는거야? 서로 연결 될 수 있어 원래?

1️⃣ 소포스(Sophos) 방화벽 역할

Sophos 방화벽은 외부에서 특정 포트로 접근할 때 다음과 같은 보안 기능을 수행해.

✅ 트래픽 필터링: 특정 IP, 포트, 프로토콜에 따라 허용/차단
✅ WAF(Web Application Firewall) 기능: 웹 요청을 검사하고, 악성 트래픽 차단
✅ 포트 포워딩(Port Forwarding) 설정 가능: 특정 포트로 들어온 요청을 내부 서버(Nginx)로 전달
✅ VPN 지원: 내부 네트워크에 안전하게 접속하도록 설정 가능
✅ IPS/IDS 기능: 침입 탐지 및 방지 시스템으로 보안 위협 탐지

2️⃣ 소포스 방화벽 → Nginx 프록시 연결 방식

외부에서 특정 IP와 포트(예: 123.1.1.1:8080)로 접근하면, Sophos 방화벽이 이 요청을 먼저 받고, 설정에 따라 Nginx로 넘겨.

📌 흐름 예시

1. 클라이언트가 123.1.1.1:8080으로 접속
2. Sophos 방화벽이 트래픽을 감시하고, 필터링 규칙을 적용
3. 허용된 요청이면 포트 포워딩을 통해 Nginx 리버스 프록시로 전달
4. Nginx가 요청을 받아서 실제 웹 서버(예: app.example.com)로 전달
5. 웹 서버가 응답을 보내고, 다시 같은 경로를 통해 클라이언트로 반환

📌 예제 구성

[Client] → [Sophos Firewall] → [Nginx Reverse Proxy] → [Web Server]

3️⃣ 소포스와 Nginx는 어떻게 연결되나?
Sophos 방화벽에서 DNAT(포트 포워딩) 설정을 하면 Nginx와 연결할 수 있어.

🚀 설정 방식 (예제)

✅ Sophos 방화벽에서 포트 포워딩 설정

  • 외부 123.1.1.1:8080 → 내부 192.168.1.10:80 (Nginx)

✅ Nginx에서 프록시 설정

  • Nginx가 받은 요청을 백엔드 웹 서버(192.168.1.20:3000)로 전달

📌 Nginx 설정 예시 (/etc/nginx/nginx.conf)

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://192.168.1.20:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

이렇게 하면 Sophos 방화벽 → Nginx → 웹 서버로 트래픽이 흐르게 돼.

이해한 로드 밸런서 구성

(가로 엄청 길게 넣으니까 벨로그에서 뵈지도 않아서 조각조각 잘라 넣음 ㄱ-)
구체적으로 더 물어보고 서버 개발자분한테 들은 정보랑 합쳐놓으니까 구체적으로는 이런 그림인 것 같음.

저 Virtual Host 자리에 실물 컴퓨터를 배치하면 로드 밸런서 역할에 가깝고, 내가 구성해보려는 서비스에 할당된 Nginx는 프록시 역할만 하는 것에 가깝다고 설명 들었다.

구성은 진짜 여러가지로 할 수 있는데, Nginx를 여러 대 둘 수도 있고, Nginx로 오기 전에 '통신'에 유리한 컴퓨터를 설치해두고 Nginx에 올려두는 서버로는 '처리'에 유리한 컴퓨터를 연결해둘 수도 있다고 하셨다.

HTTPS → 443 port

443 포트만 열 수 있다고 하셔서 왜지? 했는데 브라우저(클라이언트)가 자동으로 정하는 HTTP/HTTPS 프로토콜의 기본 포트 규칙이라고 함

http://app.example.com 요청 → 기본적으로 80 포트로 접속
https://app.example.com 요청 → 기본적으로 443 포트로 접속

DNS가 포트까지 알려주는 줄 알았는데 아니었다 😅

profile
프론트엔드 개발자

0개의 댓글