[t:/]$ 지식_

nginx lua 전역변수

2022/09/13

nginx - lua 모듈을 사용하는 환경이다. lua 모듈에서 전역 설정 값을 쓰고 싶다.

lua 모듈에서 nginx에서 선언한 설정 상수를 가져오려면 server 섹션 아래에서 사용해야 하는데, 이게 좀 골아프다. 예컨데 distmode='alpha' 같은 것을 전달하고 싶다. 그런데 lua 모듈로 짰으니 server 섹션도 배포 대상이 된다. nginx lua 모듈은 실행과 함께 몇몇 변수를 던지기가 쉽지 않다. nginx 실행 주체가 sudo 쉘로 감싼 경우 더욱 그렇다.

이렇게 해보자.

nginx.conf 의 최외각 아무곳에나 다음과 같이 쓴다.

env distmode='alp';

lua 모듈에서는 다음과 같이 부른다.

distmode=os.getenv('distmode')

요약

  1. nginx.conf는 배포 대상이 아님
  2. server 섹션은 배포 대상이며 레파짓에서 알파/상용을 구분하는 파일이 없으므로 옵션 설정이 곤란함
  3. nginx 실행과 동시에 환경변수 전달하기 어려움
  4. export에 의한 환경변수는 nginx 기동시 삭제됨. 해킹 방지로 타당하다고 사료됨
  5. env 디렉티브를 쓰면 해결됨








[t:/] is not "technology - root". dawnsea, rss