Im Rahmen dieses Tutorials konfigurieren wir einen Reverse-Proxy, damit unsere Websites in 10 Minuten im transparenten Modus arbeiten. Gehen.
Ich habe die Aufgabe festgelegt, dass ein transparentes Routing zwischen dem Besucher und der endgültigen Site auf meinem Server unter der Leitung von Proxmox mit einem Pool von Sites problemlos funktioniert. weil Das Internet ist voll von Handbüchern zur Grundkonfiguration von Haproxy. Ich bin auf das Problem gestoßen, dass 99% dieser Artikel die Arbeit eines Proxyservers im Beendigungsmodus beschreiben, und dann werden die Informationen gemäß einer ungeschützten Version (von einem Proxy zu) übertragen die endgültige VM). Das passte nicht zu mir und ich begann Stück für Stück nach Informationen im Internet zu suchen. Leider gibt es in unserem russischsprachigen Segment wenig davon (lesen Sie nein), wir mussten das bürgerliche Segment wollen. Ich mache Sie auf das Endergebnis aufmerksam, ich denke, es wird definitiv für jeden funktionieren.
global log /dev/log local0 log /dev/log local1 notice stats socket /haproxy-admin.sock mode 660 level admin stats timeout 30s daemon defaults maxconn 2000 mode http log global option dontlognull # bind *:443 ssl crt . option http-server-close timeout http-request 10s timeout connect 5000 timeout client 50000 timeout server 50000 frontend stats bind *:5000 stats enable stats uri /stats stats refresh 10s stats auth admin:mysupersecretpassword #
Block verantwortlich für ssl zu ssl
frontend env_ssl_frontend bind *:443 mode tcp option tcplog tcp-request inspect-delay 10s tcp-request content accept if { req_ssl_hello_type 1 } use_backend bk_app1 if { req.ssl_sni -m end site1.ru } use_backend bk_app2 if { req.ssl_sni -m end counter.site1.ru } use_backend bk_app3 if { req.ssl_sni -m end site2.com } use_backend bk_app4 if { req.ssl_sni -m end site3.msk.ru } use_backend bk_app5 if { req.ssl_sni -m end site4.ru } use_backend bk_app6 if { req.ssl_sni -m end site5.msk.ru } backend bk_app1 mode tcp balance leastconn option tcp-check server main 192.168.1.26:443 send-proxy check backend bk_app2 mode tcp balance leastconn option tcp-check server main 192.168.1.38:443 send-proxy check backend bk_app3 mode tcp balance leastconn option tcp-check server main 192.168.1.37:443 send-proxy check backend bk_app4 mode tcp balance leastconn option tcp-check server main 192.168.1.100:443 check backend bk_app5 mode tcp balance leastconn option tcp-check server main 192.168.1.31:443 send-proxy check backend bk_app6 balance leastconn mode tcp option tcp-check server main 192.168.1.200:443 check
Block, der für den Betrieb von Standorten auf Port 80 verantwortlich ist
frontend public bind *:80 # acl host_subdomain1 hdr(host) -i site1.ru acl host_subdomain2 hdr(host) -i counter.site1.ru acl host_subdomain3 hdr(host) -i site2.com acl host_subdomain4 hdr(host) -i site3.msk.ru acl host_subdomain5 hdr(host) -i site4.ru acl host_subdomain6 hdr(host) -i site5.msk.ru ## acl use_backend subdomain1 if host_subdomain1 use_backend subdomain2 if host_subdomain2 use_backend subdomain3 if host_subdomain3 use_backend subdomain4 if host_subdomain4 use_backend subdomain5 if host_subdomain5 use_backend subdomain6 if host_subdomain6 backend subdomain1 option httpclose option forwardfor cookie JSESSIONID prefix server subdomain-1 192.168.1.26:80 check backend subdomain2 option httpclose option forwardfor cookie JSESSIONID prefix server subdomain-2 192.168.1.37:80 check backend subdomain3 option httpclose option forwardfor cookie JSESSIONID prefix server subdomain-3 192.168.1.31:80 check backend subdomain4 option httpclose option forwardfor cookie JSESSIONID prefix server subdomain-4 192.168.1.100:80 check backend subdomain5 option httpclose option forwardfor cookie JSESSIONID prefix server subdomain-5 192.168.1.200:80 check backend subdomain6 option httpclose option forwardfor cookie JSESSIONID prefix server subdomain-6 192.168.1.38:80 check
Was wir als Ergebnis bekommen haben:
- ssl . , ssl .
- ( ) .
- .
- , . ip ( 192.168.1.150:5000) 5000 . admin .
Haproxy.
, PROXMOKS-e N - Letsencrypt, , Haproxy .
( ) c ( ) , 80 . .
, .
!
PS Der Reverse-Proxy selbst wird ausgelöst und fühlt sich unter Ubuntu 18.04, das in Proxmox-Vorlagen enthalten ist, großartig an. Zuerst habe ich es in einem vollwertigen Modus für virtuelle Maschinen ausgeführt, aber diese Entscheidung hat sich nicht gerechtfertigt, da es eine angemessene Menge an Prozessor und anderen Ressourcen der Host-Maschine verbraucht hat. Mit der Übertragung des Proxyservers in den LXC-Container ist der Ressourcenverbrauch auf fast ein paar Prozent der Ressourcen des Hostcomputers gesunken, und wir können sagen, dass er nichts verbraucht.