Nginx proxy_set_헤더 이해
Nginx proxy_set_header 는 프 록 시 서버 에 전달 할 요청 헤드 를 다시 정의 하거나 추가 할 수 있 습 니 다.이 값 은 텍스트, 변수, 조합 을 포함 할 수 있 습 니 다.정의 되 지 않 은 proxyset_header 는 이전에 정 의 된 값 을 계승 합 니 다.기본 적 인 상황 에서 두 필드 만 다시 정의 되 었 습 니 다.
proxy_set_header Host $proxy_host;
proxy_set_header Connection close;
캐 시 를 사용 하면 이전에 요청 한 헤더 필드 인 'If - Modified - Since', 'If - Unmodified - Since', 'If - None - Match', 'If - Match', 'Range', 'If - Range' 는 프 록 시 서버 에 전달 되 지 않 습 니 다.변 하지 않 는 "Host" 헤더 요청 필드 는 다음 과 같이 전 달 됩 니 다.
proxy_set_header Host $http_host;
그리고 필드 가 요청 헤더 에 없 으 면 전달 할 수 없습니다.이 경우 Host 변 수 를 설정 하여 Host 변수 에 전달 할 값 을 부여 할 수 있 습 니 다.
proxy_set_header Host $host;
이 밖 에 서버 이름과 포트 가 함께 프 록 시 서버 를 통 해 전달 된다.
proxy_set_header Host $host:$proxy_port;
요청 헤더 에 빈 필드 가 존재 하면 프 록 시 서버 를 통 해 전달 되 지 않 습 니 다.
proxy_set_header Accept-Encoding "";
총화: proxyset_header 는 요청 헤드 를 설정 하고 서버 에 헤드 정 보 를 전달 할 수 있 습 니 다.요청 헤더 에 속 하지 않 는 매개 변수 에서 도 전달 이 필요 할 때 다시 정의 하면 됩 니 다.
upstream test {
server 192.168.220.123:9099;
server 192.168.220.123:58080;
}
server {
listen 5800;
server_name 192.168.220.123;
root /usr/share/nginx/html;
include /etc/nginx/default.d/*.conf;
location / {
proxy_pass http://test;
}
jsp 테스트 클 라 이언 트 IP, 클 라 이언 트 포트, 프 록 시 IP, 프 록 시 포트 가 져 오 려 면
1:
2:
3:
1:
2:
테스트 결과
1:http://null:58828
2:http://null:58828
3:http://192.168.220.123:58828
1:http://test:80
2:test
Nginx 로그
192.168.220.177 -20508---5800 [25/Aug/2016:16:34:13 +0800] "GET /docs/test.jsp HTTP/1.1" 200 223 "-" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36" "-"
그 중에서 클 라 이언 트 IP 를 가 져 올 수 없고 request. getRemoteAddr () 를 통 해 가 져 올 수 없습니다.가 져 온 IP 는 클 라 이언 트 IP 가 아 닌 프 록 시 IP 입 니 다. nginx 에서 $remoteaddr 변수의 값 은 클 라 이언 트 의 IP 입 니 다. remoteaddr 가 전달 되 지 않 았 음 을 알 수 있 습 니 다.그리고 serverport 값 도 맞지 않 습 니 다. 현재 값 은 5800 이 고 현재 인쇄 된 것 은 80 입 니 다.현재 에이전트 는http://test host 를 통 해 얻 은 것 은 test 입 니 다.클 라 이언 트 port 도 20508 값 을 얻 지 못 했 습 니 다. 응용 프로그램 에 전송 할 수 있 는 것 은 58828 입 니 다.
upstream test {
server 192.168.220.123:9099;
server 192.168.220.123:58080;
}
server {
listen 5800;
server_name 192.168.220.123;
root /usr/share/nginx/html;
include /etc/nginx/default.d/*.conf;
location / {
proxy_pass http://test;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Real-PORT $remote_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
테스트 페이지 변경:
1:
2:
3:
1:
2:
port2:
테스트 결과:
1:http://192.168.220.177:21548
2:http://192.168.220.177:21548
3:http://192.168.220.123:21548
1:http://192.168.220.123:5800
2:192.168.220.123:5800
port2:20604
Nging 로그:
192.168.220.177 -20604---5800 [25/Aug/2016:16:38:42 +0800] "GET /docs/test.jsp HTTP/1.1" 200 275 "-" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36" "-"
request. getRemoteAddr () 제외;가 져 온 값 은 대외 적 이지 않 고 다른 값 은 모두 옳 습 니 다.getRemoteAddr 는 에이전트 의 요청 주 소 를 가 져 옵 니 다.host 를 다시 정의 하기 때문에 test 값 은 프 록 시 IP 로 바 뀌 었 습 니 다.X - Real - PORT 를 재정의 하여 $remote 전달port, 클 라 이언 트 port 도 정확하게 가 져 왔 습 니 다.어떻게 전 송 됐 는 지 알 아내 고 Nginx 를 정확하게 사용 해 한 걸음 더 나 아 갔다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.