사용자 도구

사이트 도구


nginx:proxy

nginx Proxy

server_names_hash_bucket_size

서버를 많이 추가할 경우 server_names_hash_bucket_size 관련 오류가 발생할 수 있다. 이때는 해당 값을 늘려준다.

http {
    server_names_hash_bucket_size 64;
}

Tomcat 연동

  • 로컬의 /example 컨텍스트를 www.example.com으로 연동하고자 할 때 다음과 같이 선언한다.
server {
    server_name www.example.com;

    location / {
        proxy_pass http://localhost:8000/example/;
        proxy_redirect http://www.example.com/example/ http://www.example.com/;
        proxy_cookie_path /example /;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Real-IP $remote_addr; # ELB 등 중간자가 또 있을 경우에도 제대로 작동할까?

        proxy_set_header Host $host;
        proxy_read_timeout 60s; # 응답을 읽기까지의 타임아웃. send_timeout 과 함께 조정
    }
}
<!-- proxyName 과 proxyPort를 지정해야만 한다. -->
<Connector port="8080" protocol="HTTP/1.1" redirectPort="8443" />
<!-- proxy_set_header의 Host 설정으로 proxyName="www.example.com" proxyPort="80" 제외 --> 
  • retry 설정은 Upstream 모듈을 사용한다. TODO

X-Forwarded-For

  • L7 연동하고, ProxyPass를 사용하는 경우 L7과 웹 서버를 거치는 IP 주소를 X-Forwarded-For 헤더에 저장해야하며, 이를 통해 해당 헤더의 첫번째 값으로 요청을 보낸 클라이언트의 IP 주소를 알 수 있다.
  • Apache는 ProxyPass를 사용할 경우 기본으로 X-Forwarded-For 헤더를 구성하지만 nginx는 직접 구성해줘야 한다.
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  • TomcatRemoteIpValve로 remote IP 값을 보정해 줄 수 있다.

Sticky Session

Upstream 헤더 내용 로그로 찍기

Keep Alive

참고

nginx/proxy.txt · 마지막으로 수정됨: 2019/06/19 13:26 저자 kwon37xi