사용자 도구

사이트 도구


nginx:proxy

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
nginx:proxy [2012/11/13 11:20]
kwon37xi [Tomcat 연동]
nginx:proxy [2019/06/19 13:26] (현재)
kwon37xi [Tomcat 연동]
줄 11: 줄 11:
 </code> </code>
  
-====== Tomcat 연동 ======+===== Tomcat 연동 =====
   * 로컬의 ''/example'' 컨텍스트를 ''www.example.com''으로 연동하고자 할 때 다음과 같이 선언한다.   * 로컬의 ''/example'' 컨텍스트를 ''www.example.com''으로 연동하고자 할 때 다음과 같이 선언한다.
  
줄 23: 줄 23:
         proxy_cookie_path /example /;         proxy_cookie_path /example /;
         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;         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 과 함께 조정
     }     }
 } }
줄 31: 줄 36:
 <code> <code>
 <!-- proxyName 과 proxyPort를 지정해야만 한다. --> <!-- proxyName 과 proxyPort를 지정해야만 한다. -->
-<Connector proxyName="www.example.com" proxyPort="80" port="8080" protocol="HTTP/1.1" redirectPort="8443" />+<Connector port="8080" protocol="HTTP/1.1" redirectPort="8443" /
 +<!-- proxy_set_header의 Host 설정으로 proxyName="www.example.com" proxyPort="80" 제외 --
 </code> </code>
  
   * retry 설정은 Upstream 모듈을 사용한다. TODO   * retry 설정은 Upstream 모듈을 사용한다. TODO
  
-====== Sticky Session ======+===== X-Forwarded-For ===== 
 +  * L7 연동하고, ProxyPass를 사용하는 경우 L7과 웹 서버를 거치는 IP 주소를 ''X-Forwarded-For'' 헤더에 저장해야하며, 이를 통해 해당 헤더의 첫번째 값으로 요청을 보낸 클라이언트의 IP 주소를 알 수 있다. 
 +  * Apache는 ProxyPass를 사용할 경우 기본으로 ''X-Forwarded-For'' 헤더를 구성하지만 nginx는 직접 구성해줘야 한다.<code> 
 +proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
 +</code> 
 +  * [[java:tomcat|Tomcat]]의 [[http://tomcat.apache.org/tomcat-7.0-doc/api/org/apache/catalina/valves/RemoteIpValve.html|RemoteIpValve]]로 remote IP 값을 보정해 줄 수 있다. 
 + 
 +===== Sticky Session =====
   * [[http://code.google.com/p/nginx-sticky-module/|nginx sticky module]]   * [[http://code.google.com/p/nginx-sticky-module/|nginx sticky module]]
   * 소스 컴파일해 설치해야만 한다.   * 소스 컴파일해 설치해야만 한다.
 +
 +===== Upstream 헤더 내용 로그로 찍기 =====
 +  * ''$upstream_http_[headername]''이 응답 헤더 내용을 저장한 변수이다.
 +  * ''$http_[requestHeaderName]''이 요청 헤더 내용을 저장한 변수이다.
 +  * [[http://xyduan.com/logging-request-reponse-header-to-nginx/|logging request and response header to nginx access log]]
 +
 +===== Keep Alive =====
 +  * nginx - upstream 간에 Keep Alive 설정을 하는 것이 성능상 유리하다.
 +  * [[https://jojoldu.tistory.com/322|3. AWS Beanstalk을 이용한 성능 튜닝 시리즈 - Nginx 튜닝]]
 +  * [[https://brunch.co.kr/@alden/17|nginx + tomcat 연동에 대하여]]
 +  * [[https://brunch.co.kr/@alden/11|nginx upstream 성능 최적화]]
 +
 +
 +===== 참고 =====
 +  * [[http://chase-seibert.github.io/blog/2011/12/21/nginx-ssl-reverse-proxy-tutorial.html|nginx + SSL reverse proxy tutorial]]
  
nginx/proxy.1352773204.txt.gz · 마지막으로 수정됨: 2012/11/13 11:20 저자 kwon37xi