본문 바로가기
AWS

[deploy]nginx.conf작성

by whitedeveloper 2023. 3. 30.
  1. Upstream 구성 블록 - (우린 이것 사용 x)
upstream backend{
    ip_hash;
    server 172.31.62.140:8080;
}
  • upstream 블록은 Nginx가 요청을 전달할 업스트림 서버의 목록을 정의합니다. 이 예제에서는 backend이라는 이름의 업스트림을 정의합니다.
  • ip_hash는 Nginx가 요청을 처리할 때 클라이언트 IP 주소를 해시하여 서버를 선택하는 알고리즘입니다. 이렇게 하면 동일한 클라이언트의 요청이 항상 동일한 업스트림 서버로 전달되므로 세션 정보 등을 유지하기 쉽습니다.
  • server 지시어는 backend 업스트림 서버 목록에 추가될 서버를 정의합니다. 이 예제에서는 172.31.62.140 IP 주소와 8080 포트를 가진 서버를 정의합니다.
  1. Server 구성 블록
server {
    listen       80;
    listen  [::]:80;
    server_name  localhost;
    root /path/to/react/app;
    index index.html;
  • server 블록은 Nginx가 리스닝할 포트 및 호스트 이름을 정의합니다.
  • listen 지시어는 Nginx가 리스닝할 포트를 지정합니다. 이 예제에서는 80 포트를 지정합니다. [::]는 IPv6를 사용하는 클라이언트에게 리스닝하도록 지정합니다.
  • server_name은 요청이 들어올 호스트 이름을 지정합니다. 이 예제에서는 localhost로 설정되어 있습니다.
  1. Location 블록
location / {
    root   /usr/share/nginx/html;
    index  index.html index.htm;
    try_files $uri $uri/ /index.html;
}
  • location 블록은 Nginx가 처리할 URL 경로를 정의합니다.
  • /는 모든 요청에 대한 경로를 의미합니다. 즉, 모든 요청이 이 블록에서 처리됩니다.
  • root 지시어는 요청이 처리될 때 서버에서 정적 파일을 찾을 위치를 지정합니다.
  • index 지시어는 해당 디렉토리에 인덱스 파일이 없을 때 사용할 파일 이름을 정의합니다.
  • try_files $uri $uri/ /index.html; = try_files는 Nginx가 요청을 처리할 때 파일이나 디렉토리가 존재하지 않는 경우 다른 경로로 요청을 전달하는 기능을 제공,( 요청한 파일이나 디렉토리가 존재하지 않는 경우 /index.html을 반환하도록 설정)
location /api {
    proxy_pass http://aws public ip:포트번호;
    proxy_redirect     off;
    proxy_set_header   Host $host;
    proxy_set_header   X-Real-IP $remote_addr;
    proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
}

error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
  • /api 경로로 요청이 들어오면 (upstream 블록에서 정의한)  aws public ip:포트번호 서버 그룹의 서버 중에서 하나를 선택하여 요청을 전달합니다.
    • proxy_pass 디렉티브로 요청을 전달할 서버를 지정합니다.
    • proxy_set_header 디렉티브로 프록시 서버에서 전달할 HTTP 헤더를 설정합니다.
  • error_page 디렉티브로 서버 에러 발생 시 처리할 URI를 지정합니다.
  • /50x.html 경로로 요청이 들어오면 /usr/share/nginx/html 디렉토리에서 50x.html 파일을 찾아 응답합니다.