URL: https://www.overclockers.at/netzwerktechnik/opnsense-und-haproxy-probleme-mit-regeln_258932/page_1 - zur Vollversion wechseln!
hi,
vielleicht hat wer eine Idee für mich und mein Problem, welches ich einfach nicht lösen kann.
Umgebung (bei Provider mit funktionierendem Vlan):
3 Rechner:
1x Server mit Opnsense + haproxy
1x Server "web"
1x Server "services"
Was will ich erreichen?
Wenn man die Webseite "example.com" aufruft, soll der Content von "web" angezeigt werden.
Wenn man die Webseite "services.example.com" aufruft, soll der Content von "services" angezeigt werden.
- Conditions und Rules sind eingerichtet (jeweils per "Host matches" definiert mit dem gesamten Hostnamen (also example.com bzw. services.example.com))
- Real Servers sind konfiguriert, genau so Backend und Public Services.
So.
Wenn ich im haproxy jetzt beide public services ("web" und "services") aktiviere, funktioniert NUR der "services..." Aufruf korrekt; "web" bringt einen 503er.
Wenn ich im haproxy jetzt NUR den web aktiviere, dann funktioniert dieser Aufruf korrekt und der Inhalt von "web" wird angezeigt.
Ich habe mich mit den Conditions gespielt (da vermute ich den Fehler) und "Hosts starts with" gespielt, aber immer das gleiche Ergebnis:
Jeder Service für sich funktioniert, aber wenn beide aktiviert sind, greift NUR der "services".
Jemand eine Idee?
Ohne config ist´s natürlich schwierig
Meine sieht auf der fritzbox so aus, vielleicht hilft dir das zur orientierung.
Code:# default sample config global tune.ssl.default-dh-param 2048 pidfile /var/run/haproxy.pid log /dev/log daemon notice defaults log global mode http option http-server-close frontend http-in bind :8443 ssl crt /tmp/flash/haproxy/haproxy.pem use_backend s1_cluster if { hdr_sub(host) -i s1.yy.xxx.at } use_backend s2_cluster if { hdr_sub(host) -i s2.yy.xxx.at } use_backend s3_cluster if { hdr_sub(host) -i s3.yy.xxx.at } default_backend s1_cluster backend s1_cluster server server1 192.168.1.15:8889 maxconn 5 backend s2_cluster server server2 192.168.1.70:8089 maxconn 5 backend s3_cluster server server3 192.168.1.1:81 maxconn 5
Danke für die Hilfe!
Stimmt, mit config isses einfacher
Ich habe jetzt beide public services aktiviert (services u. default_website). Wie oben geschrieben, funktioniert so IMMER nur der services.example.com Aufruf.
Code:defaults log global option redispatch -1 timeout client 30s timeout connect 30s timeout server 30s retries 3 default-server init-addr last,libc # autogenerated entries for ACLs # autogenerated entries for config in backends/frontends # autogenerated entries for stats # Frontend: services () frontend services http-response set-header Strict-Transport-Security "max-age=15768000" bind 0.0.0.0:443 name 0.0.0.0:443 ssl prefer-client-ciphers ssl-min-ver TLSv1.2 ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256 ciphersuites TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256 crt-list /tmp/haproxy/ssl/6145fcba6545b0.73824703.certlist mode http option http-keep-alive option forwardfor # tuning options timeout client 30s # logging options # ACL: services acl acl_6145fc6fe73e06.35216830 hdr(host) -i services.example.com # ACTION: services use_backend services if acl_6145fc6fe73e06.35216830 # Frontend: default_website () frontend default_website bind 0.0.0.0:443 name 0.0.0.0:443 ssl crt-list /tmp/haproxy/ssl/6162ccd93a63e8.75304049.certlist mode http option http-keep-alive option forwardfor # tuning options timeout client 30s # logging options # ACL: Default-site acl acl_616bf3dc49f8c7.06733028 hdr(host) -I example.com # ACTION: default_website use_backend default_website if acl_616bf3dc49f8c7.06733028 # Backend: acme_challenge_backend (Added by ACME Client plugin) backend acme_challenge_backend # health checking is DISABLED mode http balance source # stickiness stick-table type ip size 50k expire 30m stick on src # tuning options timeout connect 30s timeout server 30s http-reuse safe server acme_challenge_host 127.0.0.1:43580 # Backend: services (services) backend services # health checking is DISABLED mode http balance source # stickiness stick-table type ip size 50k expire 30m stick on src # tuning options timeout connect 30s timeout server 30s http-reuse safe server services 192.168.1.10:443 ssl verify none # Backend: default_website (default_website) backend default_website # health checking is DISABLED mode http balance source # stickiness stick-table type ip size 50k expire 30m stick on src # tuning options timeout connect 30s timeout server 30s http-reuse safe server web 192.168.1.20:80
du hast zwei frontends auf die selbe ip und selben port?
ein frontend und dann wie bei berndy per ACLs auf das jeweilige backend schalten
Tja, und das war mein Fehler...
junge junge, was mich das wieder Zeit gekostet hat. Auf jeden Fall vielen Dank an euch beide!
Ja, UON hat recht. Zwei Frontends am selben Port ist für deinen Anwendungsfall falsch.
Bei mir sieht das mit opnsense / haproxy gekürzt so aus:
Die 'find' ACLs sind 'Conditions'.
Die 'redirect_' ACTIONs sind 'Rules'.
Code:# Frontend: webserver_frontend_443 () frontend webserver_frontend_443 http-response set-header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload" bind <external_IP>:443 name <FQDN>:443 ssl ssl-min-ver TLSv1.2 ciphers TLS13-AES-256-GCM-SHA384:TLS13-AES-128-GCM-SHA256:TLS13-CHACHA20-POLY1305-SHA256:EECDH+AESGCM:EE CDH+CHACHA20 alpn h2,http/1.1 crt-list /tmp/haproxy/ssl/5bc267d6a888b6.03280918.certlist mode http option http-keep-alive default_backend kopano_backend option forwardfor # tuning options maxconn 100 timeout client 30s # logging options # ACL: find_SNIs1_xxx_at acl acl_5db9582d990974.32721300 hdr(host) -i s1.xxx.at # ACL: find_SNIs2_xxx_at acl acl_5db93dc15932b5.52786756 hdr(host) -i s2.xxx.at # ACTION: redirect_mx use_backend kopano_backend if acl_5db9582d990974.32721300 # ACTION: redirect_nc use_backend nc_backend if acl_5db93dc15932b5.52786756 # autogenerated entries for stats # Backend: kopano_backend () backend kopano_backend # health checking is DISABLED mode http balance source # stickiness stick-table type ip size 50k expire 30m stick on src # tuning options timeout connect 30s timeout server 30s # WARNING: pass through options below this line option forwardfor http-reuse never server fizzi2_apache 10.10.10.22:80 # Backend: nc_backend () backend nc_backend # health checking is DISABLED mode http balance source # stickiness stick-table type ip size 50k expire 30m stick on src # tuning options timeout connect 30s timeout server 30s http-reuse safe server docks_nextcloud 192.168.21.211:82
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025