Reverse Proxy für OWA, Webserver and Seafile



  • Hallo Leute,

    ich hoffe Ihr könnt mir helfen. Ich möchte zu Hause ein Testlab aufbauen. Mit Exchange, Webserver und einen Seafile Server als Dropbox Ersatz. Dazu möchte ich all die Server mit Reverse Proxy absichern.
    Ich habe pfSense installiert und konnte mit Squid Reverse Proxy bereits den Exchange Server bzw OWA EAS und Autodiscovery und RPC bereitstellen. Aber ich schaffe es nicht den Webserver bereitzustellen.

    Hat das jemand von Euch schon gemacht und kann mir da helfen?
    Ich wäre sehr Dankbar für jeden Tipp.
    Gruß Eddie



  • Hi meddie,

    was genau versuchst du mit dem Reverse Proxy zu bezwecken?
    Ich habe selber schon viel mit Reverse Proxys gearbeitet und kann dir auf jeden Fall den Varnish, der auch in der Paketverwaltung der Pfsense ist empfehlen.

    In meinen Setup habe ich allerdings einen HAproxy als erstes vorgeschaltet, der sich dann um die Balaning bzw. SSL Offloading kümmert.
    Dahinter steht dann der Varnish der sinnvolle Sachen cached.

    aber sowohl Seafile als auch Exchange sehe ich jetzt nicht als sinnvoll zu cachen an.
    Da wäre es eher aus meiner Sicht sinnvoll die Sachen redundant (HA) aufzusetzen.



  • Hallo tommytiger,

    danke für die Antwort, da ich das wie gesagt zu Hause als Testlab bzw. Exchange für Eigengebrauch haben will, brauche ich kein HA und Balancing.
    Den Reverse Proxy habe ich gedacht in erster  Linie nicht um zu Cachen sondern einfach weil ich die Server nicht einfach durch Portforwarding von außen erreichbar machen will. Da sollte dann schon ein Reverse Proxy dazwischen sein.

    ich sehe mir den Varnish an.
    Gruß Eddie



  • Wenn du nur einen reinen Reverse Proxy haben möchtest, der schlank ist, dann nimm lieber HAProxy (auch in den Paketen enthalten).
    Der Varnish ist primär zum Cachen gedacht.


  • Moderator

    Ich habe selber schon viel mit Reverse Proxys gearbeitet und kann dir auf jeden Fall den Varnish, der auch in der Paketverwaltung der Pfsense ist empfehlen.
    Der Varnish ist primär zum Cachen gedacht.

    Eben dies und Varnish hat ein ganz anderes Problem: Varnish gibt es nicht für HTTPS. Wenn du also TLS sprechen willst (und das willst du bei OWA und Co.) scheidet Varnish schonmal aus. HA-Proxy ist eigentlich genau dafür konzipiert: Loadbalancing, HA und Proxy. Da würde ich auch zugreifen, zudem kann mit dem neuesten HA-Proxy auch HTTPS gesprochen und auch transparent weitergereicht (oder terminiert) werden.

    Grüße



  • Hattest du bei deinem Einsatzszenario (Seafile, Exchange) mit HAproxy erfolg?
    Stehe nämlich vor der gleichen Aufgabe.
    Tutorials für HAproxy unter pfSense konnte ich keine brauchbaren finden - würde mich freuen, wenn du deine Konfig teilen würdest.



  • Hi,

    nein mit HA Proxy nicht, aber mit dem Squid bin ich etwas weitergekommen ich konnte meinen Webserver und meinen Seafile veröffentlichen. Allerdings stimmt noch etwas nicht, denn ich kann keine Dateien von extern uploaden. Ich hatte aber auch noch keine Zeit da weiter zu machen.
    Ich komme praktisch über verschiedene Namen auf die richtigen Server, z.B.:

    http(s)://www.domain.tld geht auf den intern 192-168.0.15 Webserver
    https://cloud.domain.tld geht auf den Seafile Server 192.168.0.22

    Das mach der Squid soweit schon richtig, nur funktioniert der Upload der Dateien nicht, irgendwas muss der Squid noch verschlucken. Den Intern geht es. Intern habe ich meinen DNS so dass die Adresse cloud.domain.tld auf die interne Adresse verweist. Und da klappt es auch.



  • Ich hatte selbst erst mit Pound begonnen, dann Varnish dazu genommen und bin dann schließlich bei haproxy gelandet:

    Bei der Suche nach einer funktionierenden Config bin ich dann auf http://ezoltan.blogspot.de/2014/10/highly-available-l7-load-balancing-for.html gestoßen:

    Here is the content of the haproxy.conf file:

    global
      log 127.0.0.1 local0 info
      maxconn 10000
      daemon
      quiet
      tune.ssl.default-dh-param 2048

    defaults
      log global
      mode http
      option httplog
      option dontlognull
      timeout connect 60000ms
      timeout client 30000ms
      timeout server 60000ms
      timeout check 60000ms
      stats enable
      stats uri /stats

    frontend fe_ex2013
      mode http
      bind *:443 ssl crt /etc/ssl/certs/exchange_certificate_and_key_nopassword.pem
      acl autodiscover url_beg /Autodiscover
      acl mapi url_beg /mapi
      acl rpc url_beg /rpc
      acl owa url_beg /owa
      acl eas url_beg /microsoft-server-activesync
      acl ecp url_beg /ecp
      acl ews url_beg /ews
      acl oab url_beg /oab
      use_backend be_ex2013_autodiscover if autodiscover
      use_backend be_ex2013_mapi if mapi
      use_backend be_ex2013_rpc if rpc
      use_backend be_ex2013_owa if owa
      use_backend be_ex2013_eas if eas
      use_backend be_ex2013_ecp if ecp
      use_backend be_ex2013_ews if ews
      use_backend be_ex2013_oab if oab
      default_backend be_ex2013

    backend be_ex2013_autodiscover
      mode http
      balance roundrobin
      option httpchk GET /autodiscover/healthcheck.htm
      option log-health-checks
      http-check expect status 200
      server lab-ex01 10.30.1.11:443 check ssl inter 15s verify required ca-file /etc/ssl/certs/ca-bundle.crt
      server lab-ex02 10.30.1.12:443 check ssl inter 15s verify required ca-file /etc/ssl/certs/ca-bundle.crt

    backend be_ex2013_mapi
      mode http
      balance roundrobin
      option httpchk GET /mapi/healthcheck.htm
      option log-health-checks
      http-check expect status 200
      server lab-ex01 10.30.1.11:443 check ssl inter 15s verify required ca-file /etc/ssl/certs/ca-bundle.crt
      server lab-ex02 10.30.1.12:443 check ssl inter 15s verify required ca-file /etc/ssl/certs/ca-bundle.crt

    backend be_ex2013_rpc
      mode http
      balance roundrobin
      option httpchk GET /rpc/healthcheck.htm
      option log-health-checks
      http-check expect status 200
      server lab-ex01 10.30.1.11:443 check ssl inter 15s verify required ca-file /etc/ssl/certs/ca-bundle.crt
      server lab-ex02 10.30.1.12:443 check ssl inter 15s verify required ca-file /etc/ssl/certs/ca-bundle.crt

    backend be_ex2013_owa
      mode http
      balance roundrobin
      option httpchk GET /owa/healthcheck.htm
      option log-health-checks
      http-check expect status 200
      server lab-ex01 10.30.1.11:443 check ssl inter 15s verify required ca-file /etc/ssl/certs/ca-bundle.crt
      server lab-ex02 10.30.1.12:443 check ssl inter 15s verify required ca-file /etc/ssl/certs/ca-bundle.crt

    backend be_ex2013_eas
      mode http
      balance roundrobin
      option httpchk GET /microsoft-server-activesync/healthcheck.htm
      option log-health-checks
      http-check expect status 200
      server lab-ex01 10.30.1.11:443 check ssl inter 15s verify required ca-file /etc/ssl/certs/ca-bundle.crt
      server lab-ex02 10.30.1.12:443 check ssl inter 15s verify required ca-file /etc/ssl/certs/ca-bundle.crt

    backend be_ex2013_ecp
      mode http
      balance roundrobin
      option httpchk GET /ecp/healthcheck.htm
      option log-health-checks
      http-check expect status 200
      server lab-ex01 10.30.1.11:443 check ssl inter 15s verify required ca-file /etc/ssl/certs/ca-bundle.crt
      server lab-ex02 10.30.1.12:443 check ssl inter 15s verify required ca-file /etc/ssl/certs/ca-bundle.crt

    backend be_ex2013_ews
      mode http
      balance roundrobin
      option httpchk GET /ews/healthcheck.htm
      option log-health-checks
      http-check expect status 200
      server lab-ex01 10.30.1.11:443 check ssl inter 15s verify required ca-file /etc/ssl/certs/ca-bundle.crt
      server lab-ex02 10.30.1.12:443 check ssl inter 15s verify required ca-file /etc/ssl/certs/ca-bundle.crt

    backend be_ex2013_oab
      mode http
      balance roundrobin
      option httpchk GET /oab/healthcheck.htm
      option log-health-checks
      http-check expect status 200
      server lab-ex01 10.30.1.11:443 check ssl inter 15s verify required ca-file /etc/ssl/certs/ca-bundle.crt
      server lab-ex02 10.30.1.12:443 check ssl inter 15s verify required ca-file /etc/ssl/certs/ca-bundle.crt

    backend be_ex2013
      mode http
      balance roundrobin
      server lab-ex01 10.30.1.11:443 check ssl inter 15s verify required ca-file /etc/ssl/certs/ca-bundle.crt
      server lab-ex02 10.30.1.12:443 check ssl inter 15s verify required ca-file /etc/ssl/certs/ca-bundle.crt