Nginx proxy_set_헤더 이해

4463 단어
사용자 인증 인터페이스: 클 라 이언 트 IP 와 port 에 따라 IP 검사 와 포트 범 위 를 확인 하고 일치 하면 사용자 인증 을 통과 합 니 다.현재 사용 하 는 것 은 Nginx 부하 균형 입 니 다. 클 라 이언 트 부터 Nginx 엔 드 ip, port 까지 모두 맞습니다. Nginx 에서 서버 에 있 는 - port 포트 까지 이상 한 포트 번호 가 됩 니 다.의문: Nginx 는 해당 서버 에 클 라 이언 트 IP 와 port 인 자 를 어떻게 전달 합 니까?Nginx proxyset_header
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 는 요청 헤드 를 설정 하고 서버 에 헤드 정 보 를 전달 할 수 있 습 니 다.요청 헤더 에 속 하지 않 는 매개 변수 에서 도 전달 이 필요 할 때 다시 정의 하면 됩 니 다.
  • 테스트 에 proxy 설정 하지 않 음set_헤더 Nginx 설정
  •     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 입 니 다.
  • 테스트 설정 proxyset_헤더 Nginx 설정
  •     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 를 정확하게 사용 해 한 걸음 더 나 아 갔다.

    좋은 웹페이지 즐겨찾기