On Sun, Jul 2, 2017 at 3:54 PM, Andrew Smalley <[email protected]>
wrote:

> I would like to ask why you have non ssl and ssl traffic on the same port?
> while it seems it is possible it is not the right way to do it.
>
>
> On 2 Jul 2017 23:37, "Igor Cicimov" <[email protected]>
> wrote:
>
>
>
> On 3 Jul 2017 8:35 am, "Igor Cicimov" <[email protected]>
> wrote:
>
>
>
> On 3 Jul 2017 6:47 am, "Daren Sefcik" <[email protected]> wrote:
>
> On Sat, Jul 1, 2017 at 4:39 PM, Igor Cicimov <
> [email protected]> wrote:
>
>>
>>
>> On 29 Jun 2017 2:46 am, "Daren Sefcik" <[email protected]> wrote:
>>
>> On Wed, Jun 28, 2017 at 8:12 AM, Olivier Doucet <[email protected]>
>> wrote:
>>
>>> Hi,
>>>
>>>
>>> 2017-06-28 16:47 GMT+02:00 Daren Sefcik <[email protected]>:
>>>
>>>> Hi, I have searched for an answer to this and tried several things but
>>>> cannot seem to figure it out so am hoping someone can point me in the right
>>>> direction. I have different backend proxy servers (squid) setup to handle
>>>> specifically HTTP and HTTPS traffic but cannot figure out how to tell
>>>> haproxy to tell the difference and send appropriately.
>>>>
>>>> For example, I have
>>>>
>>>> frontend proxy_servers
>>>> backend http_proxies
>>>> backend https_proxies
>>>>
>>>> how can I tell frontend to send all http traffic to backend
>>>> http_proxies and all https traffic to https_backend? I have tried using
>>>> dst_port 443 and the acl https ssl_fc but nothing seems to distinguish
>>>> https traffic.
>>>>
>>>
>>> Well, it should work. Send a copy of your config to see what's wrong in
>>> it.
>>>
>>> Olivier
>>>
>>>
>>>
>>>>
>>>> TIA...
>>>>
>>>
>>>
>> Here is an example, it continues to direct all https traffic to the web
>> proxy and not the streaming media one.
>>
>> frontend HTPL_PROXY
>>      bind                    10.1.4.105:8181 name 10.1.4.105:8181
>>      mode                    http
>>      log                     global
>>      option                  http-server-close
>>      option                  forwardfor
>>      acl https ssl_fc
>>      http-request set-header         X-Forwarded-Proto http if !https
>>      http-request set-header         X-Forwarded-Proto https if https
>>      maxconn                 90000
>>      timeout client          10000
>>      option tcp-smart-accept
>>      acl                     is_youtube      hdr_sub(host) -i youtube.com
>>      acl                     is_netflix      hdr_sub(host) -i netflix.com
>>      acl                     is_nflixvideo   hdr_sub(host) -i nflxvideo.net
>>      acl                     is_googlevideo  hdr_sub(host) -i googlevideo.com
>>      acl                     is_google       hdr_sub(host) -i google.com
>>      acl                     is_pandora      hdr_sub(host) -i pandora.com
>>      acl                     is_https        dst_port eq 443
>>      use_backend HTPL_STREAMING_MEDIA_PROXY_http_ipvANY  if  is_youtube
>>      use_backend HTPL_STREAMING_MEDIA_PROXY_http_ipvANY  if  is_netflix
>>      use_backend HTPL_STREAMING_MEDIA_PROXY_http_ipvANY  if  is_nflixvideo
>>      use_backend HTPL_STREAMING_MEDIA_PROXY_http_ipvANY  if  is_googlevideo
>>      use_backend HTPL_STREAMING_MEDIA_PROXY_http_ipvANY  if  is_pandora
>>      use_backend HTPL_STREAMING_MEDIA_PROXY_http_ipvANY  if  is_https
>>      default_backend HTPL_WEB_PROXY_http_ipvANY
>>
>> Obviously dst_port 443 method can not work since you are listening on
>> port 8181. Since both protocols are on same port you can try in tcp mode:
>>
>> mode tcp
>> option tcplog
>> bind *:8181
>>
>> tcp-request inspect-delay 5s
>> acl is_ssl req.ssl_hello_type 1
>>
>>
>
> Thank you, I have tried that with the below config and it still sends all
> traffic to the default backend instead of my ssl backend, any other ideas?
>
> frontend HTPL_PROXY
>       bind                    10.1.4.105:8181 name 10.1.4.105:8181
>
>       mode                    tcp
>       log                     global
>       maxconn                 90000
>       timeout client          10000
>       option tcp-smart-accept
>       tcp-request inspect-delay 5s
>       acl                     is_ssl  req.ssl_hello_type 1
>       use_backend HTPL_SSL_PROXY_tcp_ipvANY  if  is_ssl
>       default_backend HTPL_WEB_PROXY_tcp_ipvANY
>
> Only explenation i can see is that no ssl traffik is hitting haproxy at
> least not on port 8181
>
> Or the ip it is bind to
>
>
>
>
Most of the traffic is ssl, for example gmail, facebook, pandora all force
https.

The frontend IP:PORT is configured on the clients browser as the proxy
address to use and in turn haproxy serves the client a squid proxy from the
backend. I have different proxies configured specifically for non ssl
caching and some for specific ssl no caching. I am not trying to do ssl
termination or anything like that. What I want to do is serve the client
browser ssl trafffic from specific squid proxies and non ssl traffic from
other squid proxies configured for aggressive caching.

Maybe I need to be doing this somehow in the backend??

The below configurations seems to catch the majority of ssl traffic and
divert it correctly but not all....I know there has to be a way to do it
but no matter what I try it just doesn't seem to work 100%.

TIA

frontend HTPL_PROXY
        bind                    10.1.4.105:8181 name 10.1.4.105:8181
        mode                    http
        log                     global
        option                  http-server-close
        option                  forwardfor
        acl https ssl_fc
        http-request set-header         X-Forwarded-Proto http if !https
        http-request set-header         X-Forwarded-Proto https if https
        maxconn                 90000
        timeout client          10000
        option tcp-smart-accept
        acl                     is_ssl  hdr_end(host) -i 443
        use_backend HTPL_SSL_PROXY_http_ipvANY  if  is_ssl
        default_backend HTPL_WEB_PROXY_http_ipvANY

Reply via email to