콘텐츠로 이동

2024 07 08

2024-07-08

Nginx server_name

참고: https://nginx.org/en/docs/http/ngx_http_core_module.html#server_name
참고: https://nginx.org/en/docs/http/request_processing.html
참고: https://developer.mozilla.org/ko/docs/Web/HTTP/Headers/Host

  • 개요
    • HTTP/1.1 요청 메시지 내에는 Host 헤더가 필수임
      • Host 누락시 400 (Bad Request) 반환
  • server_name
    • 가상 서버를 configure
      • IP-based 가능하고,
      • name-based 가능하다 (여기가 Http header "Host"로 동작)
        • "*"로 asterisk 처리도 가능
        • "~"로 regex 처리도 가능
  • Name-based virtual servers Nginx가 요청 처리하는 법
    1. 어떤 서버로 요청 처리시킬지 결정
      • server_name과 Http Host 헤더를 통해 어디로 라우팅 할지 결정
      • default_server 파라미터를 통해 어디로 기본적으로 매핑 시킬지 지정할 수 있어
  • Proxy로 동작중이라면...

    • 리버스 프록시로 구성된 nginx에서는 proxy_set_header 로 여러가지 헤더를 설정할 수 있음
      location / {
          proxy_pass http://localhost:8080;
          proxy_set_header Host $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_set_header X-Forwarded-Proto $scheme;
      }
      
    • 여기서 기본적으로 설정안한 헤더는 요청의 것을 그대로 넘김
    • Host를 내맘대로 여기서 바꿔주면 proxy_pass 에서 요청받은 친구의 server_name과 Host가 일치하지 않으면 403 에러가 날 수 있어