Nginx
nginx 내장 변수 정리
Jinsi | Tech
2024. 8. 5. 15:02
회사 업무 중 nginx proxy 처리중에 블로그에 nginx 내장변수 정리를 하면 좋을 것 같아 남겨봅니다.
Nginx 내장 변수란?
Nginx 내장 변수는 Nginx가 요청을 처리하는 동안 자동으로 설정되는 값들로,
클라이언트의 요청, 서버의 응답, 또는 환경 설정에 대한 다양한 정보를 담고 있습니다.
이러한 변수들은 Nginx 설정 파일에서 직접 사용할 수 있으며,
프록시 설정, 리다이렉션, 로깅 등의 다양한 목적에 활용될 수 있습니다.
1. $host
- 설명: 클라이언트 요청의 Host 헤더 값. 클라이언트가 접속한 도메인 이름을 포함
- 예시:
- 클라이언트가 http://example.com/page1에 접속하면,
$host
변수는example.com
이 됩니다.
- 클라이언트가 http://example.com/page1에 접속하면,
- 설정 예시:
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend_server;
proxy_set_header X-Request-URI $request_uri;
}
}
2. $remote_addr
- 설명: 클라이언트의 IP 주소.
- 예시:
- 클라이언트의 IP 주소가
192.168.1.10
인 경우,$remote_addr
변수는192.168.1.10
이 됩니다.
- 클라이언트의 IP 주소가
- 설정 예시:
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend_server;
proxy_set_header X-Real-IP $remote_addr;
}
}
3. $proxy_add_x_forwarded_for
- 설명: 클라이언트의 IP 주소와 프록시 서버를 거친 모든 IP 주소를 포함하는 헤더 값.
- 예시:
- 클라이언트의 IP 주소가
192.168.1.10
이고, 프록시 서버가10.0.0.1
인 경우$proxy_add_x_forwarded_for
변수는192.168.1.10, 10.0.0.1
이 됩니다.
- 클라이언트의 IP 주소가
- 설정 예시:
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend_server;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
4. $scheme
- 설명: 요청 스킴 (HTTP 또는 HTTPS).
- 예시:
- 클라이언트가 HTTPS를 통해 접속하면
$scheme
변수는https
가 됩니다.
- 클라이언트가 HTTPS를 통해 접속하면
- 설정 예시:
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend_server;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
5. $uri
- 설명: 요청의 URI (쿼리 문자열 제외).
- 예시:
- 클라이언트가
http://example.com/page1?query=123
에 접속하면$uri
변수는/page1
이 됩니다.
- 클라이언트가
- 설정 예시:
server { listen 80; server_name example.com; location / { proxy_pass http://backend_server; proxy_set_header X-Original-URI $uri; } }
6. $request_uri
- 설명: 클라이언트 요청의 전체 URI (쿼리 문자열 포함).
- 예시:
- 클라이언트가
http://example.com/page1?query=123
에 접속하면$request_uri
변수는/page1?query=123
이 됩니다.
- 클라이언트가
- 설정 예시:
server { listen 80; server_name example.com; location / { proxy_pass http://backend_server; proxy_set_header X-Request-URI $request_uri; } }
7. $server_protocol
- 설명: 클라이언트가 사용한 프로토콜 (HTTP/1.0, HTTP/1.1, HTTP/2 등).
- 예시:
- 클라이언트가 HTTP/1.1을 사용하면
$server_protocol
변수는HTTP/1.1
이 됩니다.
- 클라이언트가 HTTP/1.1을 사용하면
- 설정 예시:
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend_server;
proxy_set_header X-Server-Protocol $server_protocol;
}
}
8. $request_method
- 설명: 클라이언트가 사용한 HTTP 메소드 (GET, POST, PUT, DELETE 등).
- 예시:
- 클라이언트가 GET 메소드를 사용하면
$request_method
변수는GET
이 됩니다.
- 클라이언트가 GET 메소드를 사용하면
- 설정 예시:
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend_server;
proxy_set_header X-Request-Method $request_method;
}
}
9. $query_string
- 설명: 클라이언트 요청의 쿼리 문자열.
- 예시:
- 클라이언트가
http://example.com/page1?query=123
에 접속하면$query_string
변수는query=123
이 됩니다.
- 클라이언트가
- 설정 예시:
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend_server;
proxy_set_header X-Query-String $query_string;
}
}
10. $http_<header_name>
- 설명: 클라이언트 요청의 특정 HTTP 헤더 값을 가져옵니다.
<header_name>
은 헤더 이름을 소문자로 변환하고, 하이픈(-)을 언더스코어(_)로 바꿉니다. - 예시:
- 클라이언트의 User-Agent 헤더 값을
X-Custom-Header
로 백엔드 서버에 전달합니다.
- 클라이언트의 User-Agent 헤더 값을
- 설정 예시:
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend_server;
proxy_set_header X-Custom-Header $http_user_agent;
}
}