http ¶Ç´Â https ¿äû¿¡¼ Æ÷Æ®·Î È£½ºÆ® À̸§À» ¾ò´Â ¹æ¹ý (4)
http ¶Ç´Â https ¿äû¿¡¼ Æ÷Æ®·Î È£½ºÆ® À̸§À» ¾ò´Â ¹æ¹ý (4)
·Îµå ¹ë·±¼¿Í Nginx¸¦ »ç¿ëÇÑ´Ù¸é ¼öÁ¤ ÄÚµå¾øÀÌ ¼³Á¤ÇϽʽÿÀ.
Nginx :
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
TomcatÀÇ server.xml ¿£Áø :
<Valve className="org.apache.catalina.valves.RemoteIpValve"
remoteIpHeader="X-Forwarded-For"
protocolHeader="X-Forwarded-Proto"
protocolHeaderHttpsValue="https"/>
Nginx ±¸¼º ÆÄÀÏ ¸¸ ¼öÁ¤ÇÏ´Â °æ¿ì Java ÄÚµå´Â ´ÙÀ½°ú °°¾Æ¾ßÇÕ´Ï´Ù.
String XForwardedProto = request.getHeader("X-Forwarded-Proto");
jboss ÄÁÅ×À̳ʿ¡ µÎ °³ÀÇ ÀÀ¿ë ÇÁ·Î±×·¥À» ¹èÆ÷Çß½À´Ï´Ù (µ¿ÀÏÇÑ À¯´Ð½º »óÀÚ). app1¿¡¼ ¿äûÀ» ¹ÞÀ¸¸é app2¿¡ ÇØ´çÇÏ´Â ¿äûÀ» ÇÁ·¹ÀÓÇؾßÇÕ´Ï´Ù.
¿¹ :
app1 ¿äûÀÌ http://example.com/context?param1=123
´ÙÀ½ " http://example.com/ "ÃßÃâÇؾß, ±×·¡¼ µÎ ¹ø° ÀÀ¿ë ÇÁ·Î±×·¥¿¡ ´ëÇÑ ÇÁ·¹ÀÓ ¿äûÀ» ÇÒ ¼ö ÀÖ½À´Ï´Ù.
³»°¡ »ç¿ëÇÏ·Á°í :
HttpServletRequest.getServerName() &
HttpServletRequest.getServerPort() & \
HttpServletRequest.getHeader("host")
¸Þ¼Òµå°¡ ÀÖÁö¸¸ http ¶Ç´Â https ÀÏ ¼ö ÀÖ½À´Ï´Ù.
´Ù¸¥ ´õ ÁÁÀº ¹æ¹ýÀÌ ÀÖ´Ù¸é ¾Ë·ÁÁֽʽÿÀ. °¨»ç!
¼¹ö°¡ ÇÁ·Ï½Ã ¼¹ö µÚ¿¡ÀÖ´Â °æ¿ì ÇÁ·Ï½Ã Çì´õ°¡ ¼³Á¤µÇ¾î ÀÖ´ÂÁö È®ÀÎÇϽʽÿÀ.
proxy_set_header X-Forwarded-Proto $scheme;
¿Ã¹Ù¸¥ scheme & url
À» ¾òÀ¸·Á¸é springframework Ŭ·¡½º¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
public String getUrl(HttpServletRequest request) {
HttpRequest httpRequest = new ServletServerHttpRequest(request);
UriComponents uriComponents = UriComponentsBuilder.fromHttpRequest(httpRequest).build();
String scheme = uriComponents.getScheme(); // http / https
String serverName = request.getServerName(); // hostname.com
int serverPort = request.getServerPort(); // 80
String contextPath = request.getContextPath(); // /app
// Reconstruct original requesting URL
StringBuilder url = new StringBuilder();
url.append(scheme).append("://");
url.append(serverName);
if (serverPort != 80 && serverPort != 443) {
url.append(":").append(serverPort);
}
url.append(contextPath);
return url.toString();
}
HttpServletRequest.getRequestURL ¹× HttpServletRequest.getRequestURI »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
StringBuffer url = request.getRequestURL();
String uri = request.getRequestURI();
String host = url.substring(0, url.indexOf(uri)); //result
http://docs.oracle.com/javase/tutorial/networking/urls/urlInfo.html À» http://docs.oracle.com/javase/tutorial/networking/urls/urlInfo.html . ÀÌ°ÍÀº URL ±¸¹® ºÐ¼®¿¡¼ °¡Àå °£°áÇÑ Àû¿ë ¹üÀ§ÀÔ´Ï´Ù.