본문으로 바로가기

[AWS] Nginx 프록시 서버 설정 방법

category 1. 웹개발/1_2_1 AWS 2023. 11. 3. 21:58

 

CORS(Cross-Origin Resource Sharing)

웹 보안 정책 중 하나로, 웹 페이지가 서로 다른 출처(Origin)에서 리소스를 요청할 때 브라우저가 적용하는 정책을 나타냅니다. 이 정책은 기본적으로 웹 애플리케이션의 보안을 강화하기 위해 도입되었습니다. 출처란 프로토콜(http, https), 호스트(도메인), 포트로 구성되며, 서로 다른 출처 간의 요청은 브라우저에서 보안상의 이유로 차단됩니다.

 

CORS는 웹 개발 시 한 번쯤은 만나봤을 겁니다. 예를 들어, 웹 페이지가 다른 도메인의 API로 데이터를 요청하거나 외부 도메인에서 리소스(이미지, 스크립트 등)를 가져와야 하는 경우 CORS를 다루어야 합니다. 이러한 CORS를 처리하는 방법은 여러가지가 있지만 이번 글에서는 서버에 프록시를 설정하여 처리를 해보겠습니다.

 

 

서버에 프록시 설정

서버에 프록시를 설정한다는 것은 서버 측에서 클라이언트와 외부 리소스 간의 통신을 중계하는 중간 서버를 구성하는 것을 의미합니다. 이 중간 서버는 클라이언트의 요청을 받아서 외부 서버로 전달하고, 외부 서버의 응답을 클라이언트로 전달합니다. 이를 통해 몇 가지 중요한 목적을 달성할 수 있습니다.

 

1. CORS 정책 우회

클라이언트의 브라우저에서 CORS 정책으로 인해 직접 통신이 불가능한 경우, 중간 프록시 서버가 클라이언트와 외부 서버 간의 통신을 중계하면, CORS 문제를 우회할 수 있습니다. 프록시 서버는 외부 서버로의 요청을 보내고, 외부 서버에서 응답을 받은 후 클라이언트로 전달합니다.

 

2. 보안

프록시 서버를 사용하면 외부 서버와 직접 통신하는 대신 중간 서버를 통해 통신할 수 있습니다. 이를 통해 외부 서버에 직접 노출되는 보안 문제를 완화할 수 있으며, 보안 정책을 강화할 수 있습니다. 

 

3. 캐싱 및 성능 최적화

프록시 서버는 클라이언트의 요청 및 외부 서버의 응답을 캐싱하고 필요한 경우 캐시를 사용하여 빠른 응답을 제공할 수 있습니다. 또한, 프록시 서버는 요청 및 응답 데이터를 필요에 따라 수정하거나 최적화할 수도 있습니다.

 

4. 로드 밸런싱

여러 내부 서버 간에 트래픽을 분산시켜 성능을 향상시키거나 고가용성을 제공할 수 있습니다.

 

 

Nginx 프록시 서버 설정

Nginx는 빠르고 가벼운 웹 서버이자 프록시 서버로 사용될 수 있습니다. 아래의 설정을 보고 따라 하시면 프록시 서버로 설정이 가능합니다.

 

1. Nginx를 설치

우선 Nginx를 설치해야 합니다. Ubuntu/Debian 리눅스 기반 시스템에서 진행하겠습니다.

sudo apt update
sudo apt install nginx

 

2. 프록시 설정 파일 생성

프록시 설정을 위한 별도의 Nginx 설정 파일을 생성합니다. 일반적으로 /etc/nginx/sites-available/ 디렉토리에 새로운 설정 파일을 만듭니다.

// 예를 들자면..
cd /etc/nginx/sites-available/
sudo nano proxy_config

 

3. 프록시 설정 추가

아래와 같이 Nginx 설정 파일에 프록시 설정을 추가합니다. 이 예제에서는 Nginx를 사용하여 80번 포트로 들어오는 요청을 백엔드 서버로 프록시합니다.

server {
    listen 80; // 프록시 서버의 포트를 지정합니다.
    server_name example.com; // 프록시 서버의 도메인을 지정합니다.

    location / { // 요청 경로와 프록시 대상을 설정합니다.
        proxy_pass http://your-backend-server; // 프록시 서버가 요청을 전달할 백엔드 서버의 주소를 지정합니다.
    }
}

 

4. 심볼릭 링크 생성

sites-available에 설정 파일을 생성한 후, 해당 설정 파일을 sites-enabled에 심볼릭 링크로 추가합니다.

sudo ln -s /etc/nginx/sites-available/proxy_config /etc/nginx/sites-enabled/

 

5. Nginx 설정 확인 및 재시작

sudo nginx -t  # 설정 검사
sudo systemctl restart nginx

 

이제 Nginx를 사용하여 프록시 서버가 설정되었습니다. 클라이언트가 프록시 서버에 요청을 보내면 Nginx가 해당 요청을 백엔드 서버로 중계합니다. 반드시 도메인 이름과 백엔드 서버 주소를 실제 값으로 대체하고 필요에 따라 보안 및 다른 설정을 추가해야 합니다.