라우터 경로


서브도메인을 위한 haproxy 셋팅

 이것이 필요한 이유는, 도메인을 하나 할당받고( 유료일것입니다.)

우리의 Home아이피는 가장싼 유동 아이피 인터넷일것이며

오로지 80번 포트만으로 여러가지 서브도메인을 DNS서버없이

우리가 설치한 다양한 포트에 연결할것입니다.


이러한 설정으로 다음과 같이 지라 4총사가 구축되었습니다.


Hproxy 설치

  • haproxy 설치설명달것




/etc/haproxy.cfg
global
	log /dev/log	local0
	log /dev/log	local1 notice
	chroot /var/lib/haproxy
	stats socket /run/haproxy/admin.sock mode 660 level admin
	stats timeout 30s
	user haproxy
	group haproxy
	daemon

	# Default SSL material locations
	ca-base /etc/ssl/certs
	crt-base /etc/ssl/private

	# Default ciphers to use on SSL-enabled listening sockets.
	# For more information, see ciphers(1SSL). This list is from:
	#  https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/
	ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS
	ssl-default-bind-options no-sslv3

defaults
	log	global
	mode	http
	option	httplog
	option	dontlognull
	option http-server-close
	retries                 3
	timeout http-request    10s
	timeout queue           1m
	timeout connect         10s
	timeout client          1m
	timeout server          1m
	timeout http-keep-alive 10s
	timeout check           10s
	maxconn                 3000
	errorfile 400 /etc/haproxy/errors/400.http
	errorfile 403 /etc/haproxy/errors/403.http
	errorfile 408 /etc/haproxy/errors/408.http
	errorfile 500 /etc/haproxy/errors/500.http
	errorfile 502 /etc/haproxy/errors/502.http
	errorfile 503 /etc/haproxy/errors/503.http
	errorfile 504 /etc/haproxy/errors/504.http

frontend http
bind *:80

acl host_jira hdr(host) -i jira.webnori.com
acl host_wiki hdr(host) -i wiki.webnori.com
acl host_media hdr(host) -i media.webnori.com
acl host_git hdr(host) -i git.webnori.com
acl host_bam hdr(host) -i bam.webnori.com
acl host_home hdr(host) -i webnori.com

acl is_root path -i /
acl is_domain hdr(host) -i webnori.com


use_backend jiraapp    if host_jira
use_backend wikiapp    if host_wiki
use_backend mediaapp    if host_media
use_backend gitapp	if host_git
use_backend bamapp	if host_bam
use_backend homeapp2	if host_home


backend jiraapp
   balance roundrobin 
   server host1 192.168.56.103:8080 

backend wikiapp
   balance roundrobin
   server host1 192.168.56.103:8090

backend gitapp
   balance roundrobin
   server host1 192.168.56.104:7990

backend bamapp
   balance roundrobin
   server host1 192.168.56.104:8085

backend mediaapp
   balance roundrobin
   server host1 127.0.0.1:32400


backend homeapp2
   balance roundrobin
   server host1 192.168.56.104:9000


#/etc/init.d/haproxy restart


SSL 설정

https 프로토콜을 사용하기위해서 위와같은 구조로 SSL인증과정을 단일화 할것입니다.

Why? SSL인증처리를 각 WWW-N 서버에 두게되면 모든 서버마다 SSL설정을 해야하며

인증서 만료에따른 관리교체가 힘들어집니다.

SSL 인증서 가격이 도메인당 1년에 만원정도 해서 구매 하고 Haproxy와 잘연동되고

저렴하다라고 생각하고 구매 진행하였습니다.


아래와같이 서브 도메인도 1도메인에 포함되는줄 착각하였지만.

위와같이 구성하면 4개의 SSL인증서를 각각 받아야합니다.

개발자에게 크로스 도메인상 위 도메인은 같은 도메인입니다.

그런데 저걸 굳이 쪼개서 팔아먹고 있습니다.


이게 귀찮으면 서브 도메인을 허용하는 ssl인증서를 받아야하는데

*.webnori.com

위 인증서는 1년 사용료가 20만원이 훌쩍 넘네요


개인서버 구축에 SSL적용은 사치입니다. 불매 운동을 할것을 권장하며 셋팅하지 말것을 권장드립니다.



그럼에도 불구하고, SSL인증서를 적용하는 방법에대해 간략하게 링크정도만 달겠습니다.


준비물

frontend https #Haproxy에서는 진입단계에서 SSL처리를 해주고, 내부에서는 비암호화 통신을 할수 있게해줍니다.
bind *:443 ssl crt /etc/ssl/private/webnori_com.pem #이 인증서에는 개인키 + 인증서키등
http-response set-header Strict-Transport-Security "max-age=16000000; includeSubDomains; preload;"
reqadd X-Forwarded-Proto:\ https
default_backend homeapp2

backend www-backend
balance roundrobin
server www-1 192.168.56.103:8090 check



대안 - NginxProxyManager

https://nginxproxymanager.com/

  • 도커로 디플로이
  • 웹으로 기본적인 구성가능
  • SSL Proxy및 인증서도 쉽게구성가능






  • No labels
Write a comment...