-
Nginx) 변수 종류Programing Study/네트워크 2021. 8. 13. 14:46728x90반응형
참고*https://opentutorials.org/module/384/4508
예제
아래와 같은 URL로 접근 했을 때 환경변수는 아래와 같다.
http://opentutorials.org:80/production/module/index.php?type=module&id=12
- $host : opentutorials.org
- $uri : /production/module/index.php
- $args : type=module&id=12
- $query_string (same as $args)
- server_addr : 115.68.24.88
- server_name : localhost
- server_port : 80
- server_protocol : HTTP/1.1
- $arg_type : module
- $request_uri : /production/module/index.php?type=module&id=12
- $request_filename : /usr/local/nginx/html/production/module/index.php
$arg_PARAMETER
PARAMETER는 파라미터 변수의 이름을 의미한다. 예를들어 http://opentutorials.org?mode=course 라는 요청이 있을 때 mode의 값은 $arg_mode를 통해서 알아낼 수 있다.
$host
현재 요청의 호스트명. 호스트명은 일반적으로 머신이 위치하는 IP나 도메인을 의미한다.
아래와 같은 요청이 있을 때 $host, $uri, $args의 값은 아래와 같다.
$uri
현재 요청의 URI. 호스트명과 파라미터는 제외 된다.
document_uri
$uri와 동일
$args
URL의 질의문자열.
$binary_remote_addr
바이너리 형식의 클라이언트 주소
$body_bytes_sent
전송된 바디의 바이트 수
$content_length
HTTP 요청헤더의 Content-Lenght와 동일
$content_type
HTTP 요청헤더의 Content-Type과 동일
$document_root
현재 요청의 document root 값이 root 지시어와 동일
$http_HEADER
HTTP 헤더의 값을 소문자로 대시(-)를 밑줄(_)로 변환한 값.
예를들어 아래와 같은 요청이 있을 때
1
2
3
4
5
6
7
8GET http://192.168.125.143/course/module/index.html?mode=egoing HTTP/1.1
Host: 192.168.125.143
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64; rv:20.0) Gecko/20100101 Firefox/20.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ko-kr,ko;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive
Cache-Control: max-age=0변수는 아래와 같다.
- $http_host : 192.168.125.143
- $http_connection : keep-alive
$scheme
HTTP의 구조로 http, https를 의미한다.
$server_addr
서버주소
$server_name
서버이름
$server_port
서버포트
$server_protocol
HTTP 요청 프로토콜 (HTTP/1.0 혹은 HTTP/1.1)
$cookie_COOKIE
cookie의 값을 알아내는 데 사용하는 변수. COOKIE의 값으로 cookie의 이름을 사용하면 해당 쿠키의 값을 얻을 수 있다. 예를들어 cookie_mode는 이름이 mode인 쿠키의 값을 의미한다.
참조
본 토픽은 엔진엑스로 운영하는 효율적인 웹사이트를 참조했습니다.
----------------------------------------------------------------------------------------------------------------------
참고*https://minholee93.tistory.com/entry/Nginx-Location-Block-Variables
4. Variables
variable은 nginx.conf 에서 사용할 수 있는 변수를 의미합니다.
이러한 변수에는 사용자가 직접 정의해서 사용하는 configuration variable와 nginx에 내장되어 있는 NGINX module variable이 있습니다.
내장된 NGINX 변수는 http://nginx.org/en/docs/varindex.html 에서 확인할 수 있습니다.
4-1) nginx module variable
nginx module variable은 아래와 같이 사용할 수 있습니다.
location에서 module variable의 값을 직접 return 하기 위해선 "" 안에 $module_variable을 작성해 사용하면 됩니다.
# nginx module variable : $host / $uri / $args location /inspect { return 200 "$host\n$uri\n$args"; }
위의 /inspect를 호출하면 아래와 같은 결과값을 return 합니다.
만약 $args에서 name args의 value만 추출하고 싶다면 아래와 같이 입력해 사용할 수 있습니다.
# return only name args value location /inspect { return 200 "$args_name"; }
결과값은 아래와 같습니다.
4-2) configuration variable
configuration variable은 if와 같은 conditional state를 작성할때 주로 사용합니다.
다만, conditinal state를 location 내부에 작성하는것은 권장하지 않습니다. 만약 location 내부에 작성할 경우 의도치 않은 행동이 발생할 수 있습니다.
간단한 conditional state는 아래와 같이 작성할 수 있습니다.
server { # configuration variable set $weekend 'No'; # check if weekend if ( $date_local ~ 'Saturday|Sunday' ){ set $weekend 'Yes'; } # return $weekend value location /is_weekend { return 200 $weekend; } }
위의 내용을 해석해보면 $weekend 변수를 configuration variable로 선언해 사용하며 NGINX module variable인 $date_local 를 사용해 오늘이 토/일 요일 경우에만 $weekend 변수를 'Yes'로 변경합니다.
위와 같이 작성하고 호출해보면 아래와 같이 결과값을 return 하는 것을 확인할 수 있습니다.
728x90반응형'Programing Study > 네트워크' 카테고리의 다른 글
Ngnix) 특정 IP만 허용 및 차단 설정하기 (0) 2021.08.13 Ngnix) 문법 정리(펌) (0) 2021.08.13 Nginx) proxy_pass 작동안할때 (0) 2021.08.13 Nginx) location 에 return, proxy_pass 차이 (0) 2021.08.13 서버) 웹 캐싱과 브라우저 캐싱에 대해서 (2) 2021.08.12