Vanwege wat aanpassingen in de infrastructuur alhier, probeer ik een reverse proxy (voor HTTP en HTTPS) op te zetten met Squid (op Ubuntu 10.04LTS). Onze huidige proxy-server (BlueCoat, die ook het reverse stuk doet) gaat er binnenkort uit en de nieuwe oplossing bevat geen mogelijkheden voor reverse proxy.
Wat we willen bereiken is eigenlijk vrij simpel:
- We willen onze Exchange-server via HTTP en HTTPS beschikbaar maken voor webmail en Activesync. (Alles loopt natuurlijk over HTTPS, maar request op HTTP moeten natuurlijk worden geredirect naar HTTPS.)
- We willen 3 webservers bereikbaar maken waarvan 2 alleen HTTP en 1 HTTP en HTTPS.
- We willen geen HTTPS-offloading doen. De webservers zelf moeten dus door de proxy ook over HTTPS-benaderd worden voor alle request op HTTPS.
Nou dacht ik: dat moet eenvoudig te regelen zijn in bijv. Squid. Dat valt me tot nu toe erg tegen. Ik dacht me, met wat leeswerk, wel wegwijs zou kunnen maken in squid.conf
Wat ik nu heb is het volgende:
Zoals je ziet heeft de proxy 2 IP-adressen met op ieder IP een http_port en een https_port aangemaakt.
Dit werkt echter niet zoals ik zou willen.
Wat er nu lijkt te gebeuren, is dat alle requests die naar de proxy gestuurd worden geforward worden over HTTP naar de cache_peers, die ik in de code onder de https_port(s) heb staan. Ook lijkt de proxy helemaal niet te kijken naar de URL die ik in mijn browser intik.
Als ik in mijn hostsfile dus een entry aanmaak voor bla.bla.com met als IP-adres 1 van de 2 IP's van de proxy-server, dan worden mijn requests naar de cache_peer onder de https_port voor dat IP-adres gestuurd over HTTP.
Kan iemand mij vertellen, wat ik nu verkeer doe?
Wat we willen bereiken is eigenlijk vrij simpel:
- We willen onze Exchange-server via HTTP en HTTPS beschikbaar maken voor webmail en Activesync. (Alles loopt natuurlijk over HTTPS, maar request op HTTP moeten natuurlijk worden geredirect naar HTTPS.)
- We willen 3 webservers bereikbaar maken waarvan 2 alleen HTTP en 1 HTTP en HTTPS.
- We willen geen HTTPS-offloading doen. De webservers zelf moeten dus door de proxy ook over HTTPS-benaderd worden voor alle request op HTTPS.
Nou dacht ik: dat moet eenvoudig te regelen zijn in bijv. Squid. Dat valt me tot nu toe erg tegen. Ik dacht me, met wat leeswerk, wel wegwijs zou kunnen maken in squid.conf
Wat ik nu heb is het volgende:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
| visible_hostname proxy.domainA.com debug_options ALL,1 extension_methods RPC_IN_DATA RPC_OUT_DATA http_port <<proxy-IP-adres-1>>:80 defaultsite=www.domainA.com cache_peer <<IP-adres-serverA>> parent 80 0 no-query proxy-only originserver login=PASS name=domainAhttp acl ACLdomainAhttp dstdomain www.domainA.com cache_peer_access nizositehttp allow ACLdomainAhttp never_direct allow ACLdomainAhttp http_access allow ACLdomainAhttp cache_peer <<IP-adres-serverB>> parent 80 0 no-query proxy-only originserver name=domainBhttp acl ACLdomainBhttp dstdomain www.domainB.nl cache_peer_access domainBhttp allow ACLdomainBhttp never_direct allow ACLdomainBhttp http_access allow ACLdomainBhttp http_port <<proxy-IP-adres-2>>:80 defaultsite=webmail.domainB.nl cache_peer <<IP-adres-serverC>> parent 80 0 no-query proxy-only originserver name=webmailredirect acl ACLwebmailredirect dstdomain webmail.domainB.nl cache_peer_access webmailredirect allow ACLwebmailredirect never_direct allow ACLwebmailredirect http_access allow ACLwebmailredirect https_port <<proxy-IP-adres-1>>:443 cert=/etc/ssl/certs/www.domainA.com.crt key=/etc/ssl/certs/www.domainA.com.key defaultsite=www.domainA.com cache_peer <<IP-adres-serverA>> parent 443 0 no-query proxy-only originserver login=PASS sslflags=DONT_VERIFY_PEER name=domainAhttps acl site dstdomain ACLdomainAhttps cache_peer_access domainAhttps allow ACLdomainAhttps never_direct allow ACLdomainAhttps http_access allow ACLdomainAhttps miss_access allow ACLdomainAhttps https_port <<proxy-IP-adres-2>>:443 cert=/etc/ssl/certs/webmail.crt key=/etc/ssl/certs/webmail.key defaultsite=webmail.domainB.nl cache_peer <<IP-adres-Exchange>> parent 443 0 no-query proxy-only originserver login=PASS ssl sslflags=DONT_VERIFY_PEER front-end-https=on name=webmailhttps acl ACLwebmailhttps dstdomain webmail.domainB.nl cache_peer_access webmailhttps allow ACLwebmailhttps never_direct allow ACLwebmailhttps http_access allow ACLwebmailhttps miss_access allow ACLwebmailhttps acl all src 0.0.0.0/0.0.0.0 http_access deny all miss_access deny all |
Zoals je ziet heeft de proxy 2 IP-adressen met op ieder IP een http_port en een https_port aangemaakt.
Dit werkt echter niet zoals ik zou willen.
Wat er nu lijkt te gebeuren, is dat alle requests die naar de proxy gestuurd worden geforward worden over HTTP naar de cache_peers, die ik in de code onder de https_port(s) heb staan. Ook lijkt de proxy helemaal niet te kijken naar de URL die ik in mijn browser intik.
Als ik in mijn hostsfile dus een entry aanmaak voor bla.bla.com met als IP-adres 1 van de 2 IP's van de proxy-server, dan worden mijn requests naar de cache_peer onder de https_port voor dat IP-adres gestuurd over HTTP.
Kan iemand mij vertellen, wat ik nu verkeer doe?