AWS
[deploy]nginx.conf작성
by whitedeveloper
2023. 3. 30.
- 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 포트를 가진 서버를 정의합니다.
- 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로 설정되어 있습니다.
- 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 파일을 찾아 응답합니다.