본문 바로가기
Nginx

nginx 수정 하면서 썼던 명령어 정리

by ybs 2021. 8. 3.
반응형

1. nginx configure 확인(추가된 모듈이나 conf-path 등등)

$ /(nginx 디렉토리)/sbin/nginx -V

# cf) nginx 버전 확인
$ /(nginx 디렉토리)/sbin/nginx -v

2. nginx 문법체크/중지/시작

# 문법체크
$ /(nginx 디렉토리)/sbin/nginx -t

# 중지
$ /(nginx 디렉토리)/sbin/nginx -s stop

# 시작
$ /(nginx 디렉토리)/sbin/nginx

3. path variable 요청은 = 로 exact matching 하면 안됌

아래와 같이 '=' 로 location 을 만들면 location 우선순위가 가장 높다(요청된 URI와 지정된 문자열이 정확히 일치).

location = /ybs/api/ {
  ... 
}

location = /ybs/web/ {
  ...
}

그런데 path variable 방식은 /ybs/api/1,  /ybs/web/2 와 같이 URI 에 파라미터가 있기 때문에 문자열이 정확히 일치할 수 가 없다.

그러므로 그 다음 우선순위인 '=' 없는 location으로 만들어야 한다.

location /ybs/api/ {
  ... 
}

location /ybs/web/ {
  ...
}

 

4. URI 짜르기

예를 들어 요청이 /ybs/api/08/03 이렇게 오면 아래 location 이 받게 되고, /ybs/api/ 하위의 /08/03 path 만 proxy_pass 에 붙어서 전달된다(그리고 ybs_server  는 upstream 으로 선언된 거).

location /ybs/api/ {

    rewrite ^/ybs/api(/.*)$ $1 break;
    proxy_pass http://ybs_server;
    
    ... 
}

 

5. nginx resolve 설정

새롭게 지정한 proxy_pass URL 에 대해서 'no resolver defined to resolve (domain)' 에러가 발생했다.

다른 location 들에 있는 resolver 지시자를 추가적으로 넣어서 해결했다(resolver dns 서버 ip)

포트를 명시하지 않으면 53을 쓴다. dns 서버 쿼리 시 라운드 로빈 방식이다. IPv6 은 당연히 지원되고(정말 옛날 버전 아닌이상)

IPv6 조회가 적합하지 않은 케이스면 ipv6=off 옵션도 있다. 

 

디폴트로 nginx 캐시는 응답의 TTL(Time To Live) 값을 사용한다. valid=time 옵션(time은 10s, 50s 이렇게 작성)을 통해 캐시 시간 조정이 가능하다(과거 1.1.9 버전에서는 캐시 시간을 조정하는게 지원되지 않았고 항상 5분 캐시 적용이 정책이었다).

 

resolver_timeout 은 dns 룩업 요청을 보내고 기다리는 시간에 대한 타임아웃인데 따로 지정안하면 디폴트 30초다.

http://nginx.org/en/docs/http/ngx_http_core_module.html#resolver

 

Module ngx_http_core_module

Module ngx_http_core_module Directives Syntax: absolute_redirect on | off; Default: absolute_redirect on; Context: http, server, location This directive appeared in version 1.11.8. If disabled, redirects issued by nginx will be relative. See also server_na

nginx.org

 

6. nginx if 지시자 사용 안했던 이유

Nginx HTTP 서버 책(끌레망 네델꾸 저)에서 if문 사용 위험성을 언급하면서 proxy_pass 는 if 블록 안에서 사용하지 말고 location 블록에 둬야 한다고 말한다(p387). nginx 공식 글에서도 if 사용에 대해 위험하단걸 언급해서 (https://www.nginx.com/resources/wiki/start/topics/depth/ifisevil/) if 사용을 지양했다.

반응형

'Nginx' 카테고리의 다른 글

rewrite break 이슈  (0) 2022.02.17
reset_timedout_connection 옵션  (0) 2021.01.19
timeout 설정 정리  (0) 2021.01.19
파일 업로드/다운로드 시 임시 디렉토리 권한 이슈  (0) 2021.01.19
nginx gzip 옵션  (0) 2021.01.17