Bepoz
파즈의 공부 일기
Bepoz
전체 방문자
오늘
어제
  • 분류 전체보기 (232)
    • 공부 기록들 (85)
      • 우테코 (17)
    • Spring (85)
    • Java (43)
    • Infra (17)
    • 책 정리 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Bepoz

파즈의 공부 일기

Infra

[Nginx] 하나의 Nginx로 여러 upstream 처리하기

2021. 8. 4. 01:32

하나의 Nginx로 여러 upstream 처리하기

events {}

http {
  upstream app {
    server 앱_아이피;
  }

  upstream api-dev {
    server 데브서버_아이피;
  }

  upstream api {
    server 프로드서버_아이피;
  }

  # Redirect all traffic to HTTPS

//  server {
//    listen 80;
//    return 301 https://$host$request_uri;
//  }
//
//  server {
//    listen 443 ssl;

//    location / {
//      proxy_pass http://app;
//    }
//  }

 server {
    listen 80;
    server_name api-dev.thankyou-for.com;
    return 301 https://$host$request_uri;
  }

 server {
    listen 443 ssl;
    server_name api-dev.thankyou-for.com;

    location / {
      proxy_pass http://api-dev;
    }

  }

  server{
    listen 80;
    server_name api.thankyou-for.com;
    return 301 https://$host$request_uri;
  }
 server {
    listen 443 ssl;
    server_name api.thankyou-for.com;

    location / {
      proxy_pass http://api;
    }

  }
}

TLS에 대한 설정들은 모두 뺐다. 하나의 Nginx로 여러 upstream으로 보내주기 위한 설정파일이다.

밑에서 부터 살펴보면 80포트로 api.thankyou-for.com으로 들어오면 그대로 https로 변환하여서 리다이렉 해준다. 그러면 바로 밑에서 받게된다. listen 443 ssl; server_name api.thankyou-for.com 여기에서 말이다.

그 위의 server_name이 api-dev.thankyou-for.com에서도 마찬가지다.

그렇다면 server_name이 그 어떤 것에도 포함되지 않는다면 어떤 것으로 처리가 될까??
현재 상황에 대한 조건은 다음과 같다. 특정 도메인을 구매했고, api.thankyou-for.com과 api-dev.thankyou-for.com은 해당 Nginx가 존재하는 ec2의 public_ip를 가리키고 있다. 이를 받기위해서 위에 server_name을 두어서 받고 있는 것이다. 그런데 내가 해당 도메인 싸이트에서 위 2개의 url이 아닌 bepoz.thankyou-for.com도 해당 Nginx를 받게끔 했다고 한다면 어떻게 되는지가 궁금한 것이다.

결론부터 말하자면 매칭되는 server_name이 없을 경우에는 가장 위쪽에 있는 서버를 defualt_server로 보고 연결해준다. 즉, 위의 설정 파일에서 api-dev.thankyou-for.com에서 처리하게 된다. 주석을 풀게된다면 해당 서버가 받게 될 것이다.


REFERENCE

http://nginx.org/en/docs/http/request_processing.html

'Infra' 카테고리의 다른 글

[Flyway] 간략히 알아보는 Flyway 적용법  (0) 2021.10.05
[Jenkins] 간략히보는 SonarQube와 Jenkins 연동하기  (0) 2021.08.06
[DB] Mysql Order By 쿼리 ONLY_FULL_GROUP_BY 문제 해결  (0) 2021.08.06
[Jenkins] PR 라벨에 따른 젠킨스 빌드 유발 설정  (0) 2021.08.04
[DB] drop, Delete, truncate 에 대해  (0) 2021.05.07
    'Infra' 카테고리의 다른 글
    • [Jenkins] 간략히보는 SonarQube와 Jenkins 연동하기
    • [DB] Mysql Order By 쿼리 ONLY_FULL_GROUP_BY 문제 해결
    • [Jenkins] PR 라벨에 따른 젠킨스 빌드 유발 설정
    • [DB] drop, Delete, truncate 에 대해
    Bepoz
    Bepoz
    https://github.com/Be-poz/TIL

    티스토리툴바