개1064;1201;1004;/196; LXD 를 쓸ǐ12;나, 1665;에 네트워크를 구성할ǐ12; HAProxy 를 1333;1333; 씁니다. 가1109; 간단Ȣ16;면서 강/141;한 프/197;시형식1032; /196;드0184;런서1060;1088; L7 라우터 1060;기 ǐ12;문1077;니다. 기실 엣1648; 라우터에서도 1060;놈1012; 설치를 할수 1080;lj16;데, 그/111;,172; Ǹ16;면 NAT 환ᅆ1;에서 뒷단1012; 쉽,172; 한개1032; IP/196; 각각1032; 서버를 서비스 할수 1080;,172; .121;니다.
예를 들Ǻ12;서 Ǻ12;떤 IP 1.2.3.4 라lj16;,172; 1080;다고 생각 해 봅시다. 여기에 foo.com 1060;라lj16; 도메1064;1012; 연결 합니다. 근데 lxd 나 docker 또lj16; NAT 환ᅆ1;에서 각 프라1060;빗 IP(예1228;/196; 10.0.0.1/24를 가1221; 해봅시다.) 를 연결 할ǐ12;에 10.0.0.2 lj16; asdf.foo.com 1060;라lj16; 서브 도메1064;1004;/196; 10.0.0.3 에lj16; defg.foo.com 1060;라lj16; ,152;/196; 연결 한다고 가1221; 해봅시다. 1060;,172; 꽤 쉽,172; .121;니다. (물론 nginx 나 다른 ,163;들도 다 가능1008; 합니다. NJ17;연Ȣ16;1424;. 근데 haproxy 가 그런 서버들과 달리 /196;우 소Ȓ11;1060;나 SNI 헤더라Nj12;가... 여튼 더 폭ᆵ1;1008; 설1221;1060; 가능합니다.
우ǥ16;투 14.04 기1456;1004;/196; 1.5 버1204; 1060;상1012; 가1648;고 설명 합니다. 설1221; 변ᅆ1;후 service haproxy restart 를 해1480;야 합니다.
설치(루트권한)
apt-add-repository -y ppa:vbernat/haproxy-1.5 && apt-get update && apt-get install -fy haproxy
아래lj16; /etc/haproxy/haproxy.cfg 1032; 예1228; 1068;ǥ12; 1077;니다...
#default 와 global ǥ12;ǥ16;1008; 생략.# 아래lj16; 유1200; 1064;1613;1060; 없lj16; 6168;1060;1648;를 유1200; 1064;1613;1012; ,152;Ǻ12; 1468;userlist group1160; 160; 160; 160; user user_id insecure-password plain_text_password_herefrontend http160; 160; 160; 160; bind :80160; 160; 160; 160; option http-server-close160; 160; 160; 160; option forwardfor160; 160; 160; 160; # 아래lj16; 1312;,148;1012; ,152;Ǻ12; 1469;니다.160; 160; 160; 160; # hdr_beg(host)lj16; 헤더1032; Host 필드(Virtual Host)가 특1221; 단Ǻ12;/196; 시1089; .104;lj16; ᅆ1;우 -> true/196; 매칭1060; .121;니다.160; 160; 160; 160; acl acs_asdf 160; 160;hdr_beg(Host) 160;-i asdf. hdr_beg(Host) -i pref.160; 160; 160; 160; acl acs_def 160; 160; hdr_beg(Host) 160;-i def.160; 160; 160; 160; # hdr(Host) lj16; 1204;역 1068;치160; 160; 160; 160; acl acs_web 160; 160; hdr(Host) -i www.foo.com -i foo.com160; 160; 160; 160; # 아래lj16; 1064;1613;1060; 없lj16; 6168;1060;1648;를 1064;1613;1012; ,152;Ǻ12; 1469;니다.160; 160; 160; 160; acl auth_ok 160; 160; http_auth(group1)160; 160; 160; 160; # 아래lj16; acs_prefix1 에 대해서 1064;1613;1012; 강1228;/196; ,152;Ǻ12;1468;.160; 160; 160; 160; http-request 160; 160;auth realm BasicAuth if acs_asdf !auth_ok160; 160; 160; 160; # 만1068;에 1312;,148;1060; 매칭.104;면 특1221; 0177;엔드를 사용 함160; 160; 160; 160; # 1064;1613;1060; 성공 Ȣ16;고 acs_prefix1 1060; 맞다면...160; 160; 160; 160; use_backend asdf 160; 160; 160; 160;if acs_asdf auth_ok# 1060; ᅆ1;우lj16; 1064;1613;1060;랑 무관Ȣ16;,172; 1217;속160; 160; 160; 160; use_backend def 160; 160; 160; 160; if acs_def160; 160; 160; 160; use_backend web 160; 160; 160; 160; if acs_web# 위 1312;,148;1473; Ȣ16;나도 안,152;리면 디폴트/196; 갑니다.160; 160; 160; 160; default_backend default# HTTPS 도 ᇼ1;1068; 합니다.frontend https# PEM 파1068;1012; /etc/haproxy/default.pem ᅆ1;/196;에 생성해서 넣Ǻ12; 1469;니다. 뭐 1060;,148; 아실,144;라 0127;고 설명 생략 합니다.160; 160; 160; 160; bind :443 ssl crt /etc/haproxy/default.pem ciphers AESGCM+AES128:AES128:AESGCM+AES256:AES256:RSA+RC4+SHA:!RSA+AES:!CAMELLIA:!aECDH:!3DES:!DSS:!PSK:!SRP:!aNULL no-sslv3160; 160; 160; 160; option http-server-close160; 160; 160; 160; option forwardfor160; 160; 160; 160; rspadd Strict-Transport-Security:\ max-age=31536000;\ includeSubDomains160; 160; 160; 160; acl acs_asdf 160; 160;hdr_beg(Host) 160;-i asdf. hdr_beg(Host) -i pref.160; 160; 160; 160; acl acs_def 160; 160; hdr_beg(Host) 160;-i def.160; 160; 160; 160; acl acs_web 160; 160; hdr(Host) -i www.foo.com -i foo.com160; 160; 160; 160; acl auth_ok 160; 160; http_auth(group1)160; 160; 160; 160; http-request 160; 160;auth realm BasicAuth if acs_asdf !auth_ok160; 160; 160; 160; use_backend asdf 160; 160; 160; 160;if acs_asdf auth_ok160; 160; 160; 160; use_backend def 160; 160; 160; 160; if acs_def160; 160; 160; 160; use_backend web 160; 160; 160; 160; if acs_web160; 160; 160; 160; default_backend default# 기본backend default160; 160; 160; 160; server default 10.1.1.225:1000 checkbackend asdf160; 160; 160; 160; server asdf1 10.1.1.2:80 checkbackend def160; 160; 160; 160; server def1 10.1.1.3:80 checkbackend web160; 160; 160; 160; server web 10.1.1.1:1234 check# 아래lj16; HTTPS를 1648;원Ȣ16;lj16; 0177;엔드. 사실 1060;,172; HTTP 프론트 엔드에 연결해도 .120;...backend backendhttps160; 160; 160; 160; server httpbackend1 10.11.0.30:443 ssl check verify none
À̳𵵠¾µ¼ö ÀÖ´Ù°í ÇÏ´õ±º¿ä..
½Ã°£³¯¶§ µû¶óÇغÁ¾ß°Ú½À´Ï´Ù.
°¨»çÇÕ´Ï´Ù!
reverse°¡ µÇ¸é 1°³ÀÇ °¡»ó¼¹ö ip·Î ¼ö¸¹Àº vmÀ» µ¹¸± ¼ö ÀÖÀ»°Å °°½À´Ï´Ù.