Netgate Discussion Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Search
    • Register
    • Login

    Squid3 - Reverse Proxy Help

    Scheduled Pinned Locked Moved pfSense Packages
    16 Posts 6 Posters 18.1k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • N
      nutt318
      last edited by

      I've been trying to figure out the Reverse Proxy with squid and I am not having any luck. I found this post (http://forum.pfsense.org/index.php/topic,51128.0.html) but it wasnt much help and from what I saw I think everything is setup properly. So, correct me if I'm wrong but the reverse proxy will look at the http header and will redirect you to the proper private address in cases where you only have 1 public IP and trying to host multiple websites.

      Below is my setup, Hopefully someone can tell me what I have wrong.

      Thanks!

      Version
      2.0.1-RELEASE (i386)
      built on Mon Dec 12 18:24:17 EST 2011
      FreeBSD 8.1-RELEASE-p6
      You are on the latest version.

      Squid3 Version
      3.1.20 pkg 2.0.5_3

      My domain is Registered through DreamHost, so I've setup a test1.mydomain.com to point to MyPublicIP and I setup test2.mydomain.com to point to the same MyPublicIP.

      Now for the Reverse Proxy setup in pfSense.

      [EDIT: removed unfetchable links causing password prompt -jimp]

      1 Reply Last reply Reply Quote 0
      • N
        nutt318
        last edited by

        So I've got it working sorta by doing a reboot however I'm still having a few problems. So at first I just had 2 dummy webservers running to test which worked great over http: but now the ones I really want to get working are over https: I create the same settings in the reverse proxy and also added our *.mydomain.com wildcart cert for the reverse SSL certificate.

        Anyways our servers have self signed certificates which throw security errors because the cert isnt signed by a trusted authority. No big deal buy I would like to use our wildcard cert to override this warning and from the settings it looks like this is possible. However it still showing the original self signed one.

        Also now the https sites are not wanting to resolve properly from the outside.

        Any ideas?

        1 Reply Last reply Reply Quote 0
        • N
          nutt318
          last edited by

          I'm still needing some help on this. Any reason for https reverse proxy not to work?

          1 Reply Last reply Reply Quote 0
          • N
            nutt318
            last edited by

            I guess I'll just try to beat this thread to death, at this point I'm not sure if HTTPS works using the Reverse Proxy.

            I'm getting this error when trying to access the 2 sites over HTTPS from outside the firewall. However 2 different sites work great using HTTP.

            Under the Real Time monitor tab in the Reverse Proxy section I'm seeing these errors.

            I would greatly appreciate any help/recommendations

            Here is my squid.conf file. The sites I'm having problems with are called Jira and Confluence.

            
            # This file is automatically generated by pfSense
            # Do not edit manually !
            http_port 10.10.0.1:3128
            http_port 127.0.0.1:3128 intercept
            icp_port 7
            
            pid_filename /var/run/squid.pid
            cache_effective_user proxy
            cache_effective_group proxy
            error_default_language English
            icon_directory /usr/local/etc/squid/icons
            visible_hostname localhost
            cache_mgr myemail@mydomain.com
            access_log /var/squid/logs/access.log
            cache_log /var/squid/logs/cache.log
            cache_store_log none
            sslcrtd_children 0
            logfile_rotate 30
            shutdown_lifetime 3 seconds
            # Allow local network(s) on interface(s)
            acl localnet src  10.10.0.0/16
            uri_whitespace strip
            
            acl dynamic urlpath_regex cgi-bin \?
            cache deny dynamic
            cache_mem 512 MB
            maximum_object_size_in_memory 32 KB
            memory_replacement_policy heap GDSF
            cache_replacement_policy heap LFUDA
            cache_dir ufs /var/squid/cache 5000 16 256
            minimum_object_size 0 KB
            maximum_object_size 4 KB
            offline_mode offcache_swap_low 90
            cache_swap_high 95
            acl donotcache dstdomain "/var/squid/acl/donotcache.acl"
            cache deny donotcache
            # No redirector configured
            
            #Remote proxies
            
            # Setup some default acls
            acl allsrc src all
            acl localhost src 127.0.0.1/32
            acl safeports port 21 70 80 210 280 443 488 563 591 631 777 901  3128 1025-65535
            acl sslports port 443 563
            acl manager proto cache_object
            acl purge method PURGE
            acl connect method CONNECT
            
            acl allowed_subnets src 10.10.0.0/16 192.168.33.0/24
            acl whitelist dstdom_regex -i "/var/squid/acl/whitelist.acl"
            http_access allow manager localhost
            
            # Allow external cache managers
            acl ext_manager src 127.0.0.1
            acl ext_manager src 10.10.0.1
            acl ext_manager src
            http_access allow manager ext_manager
            
            http_access deny manager
            http_access allow purge localhost
            http_access deny purge
            http_access deny !safeports
            http_access deny CONNECT !sslports
            
            # Always allow localhost connections
            http_access allow localhost
            
            request_body_max_size 0 KB
            delay_pools 1
            delay_class 1 2
            delay_parameters 1 -1/-1 -1/-1
            delay_initial_bucket_level 100
            delay_access 1 allow allsrc
            
            # Reverse Proxy settings
            http_port 75.151.74.9:80 accel defaultsite=mydomain.com vhost
            https_port 75.151.74.9:443 accel cert=/usr/local/etc/squid/5016c29e69a10.crt key=/usr/local/etc/squid/5016c29e69a10.key defaultsite=mydomain.com
            #test1
            cache_peer 10.10.0.39 parent 80 0 proxy-only no-query no-digest originserver login=PASS name=rvp_test1
            
            #test2
            cache_peer 10.10.30.5 parent 80 0 proxy-only no-query no-digest originserver login=PASS name=rvp_test2
            
            #jira
            cache_peer 10.10.0.17 parent 443 0 proxy-only no-query no-digest originserver login=PASS ssl sslflags=DONT_VERIFY_PEER front-end-https=auto name=rvp_jira
            
            #confluence
            cache_peer 10.10.0.21 parent 443 0 proxy-only no-query no-digest originserver login=PASS ssl sslflags=DONT_VERIFY_PEER front-end-https=auto name=rvp_confluence
            
            acl rvm_test1 url_regex -i test1.mydomain.com
            acl rvm_test2 url_regex -i test2.mydomain.com
            acl rvm_jira url_regex -i jira.mydomain.com
            acl rvm_confluence url_regex -i confluence.mydomain.com
            cache_peer_access rvp_test1 allow rvm_test1
            cache_peer_access rvp_test2 allow rvm_test2
            cache_peer_access rvp_jira allow rvm_jira
            cache_peer_access rvp_confluence allow rvm_confluence
            cache_peer_access rvp_test1 deny allsrc
            cache_peer_access rvp_test2 deny allsrc
            cache_peer_access rvp_jira deny allsrc
            cache_peer_access rvp_confluence deny allsrc
            never_direct allow rvm_test1
            never_direct allow rvm_test2
            never_direct allow rvm_jira
            never_direct allow rvm_confluence
            http_access allow rvm_test1
            http_access allow rvm_test2
            http_access allow rvm_jira
            http_access allow rvm_confluence
            
            # Package Integration
            redirect_program /usr/local/bin/squidGuard -c /usr/local/etc/squidGuard/squidGuard.conf
            redirector_bypass on
            redirect_children 3
            
            # Custom options
            
            # Always allow access to whitelist domains
            http_access allow whitelist
            # Setup allowed acls
            # Allow local network(s) on interface(s)
            http_access allow allowed_subnets
            http_access allow localnet
            # Default block all to be sure
            http_access deny allsrc
            
            

            [EDIT: removed unfetchable links causing password prompt -jimp]

            1 Reply Last reply Reply Quote 0
            • L
              louis-m
              last edited by

              I'm having the same issue here with the latest squid on 2.1_x64
              I can access my sites no problem using http. However, trying to use https is a different matter.
              Server A (windows 2k8r2) & Server B (centos_6.3_x64) can both be reached internally on http & https.
              However, they can only be reached on http externally. Any idea?

              1 Reply Last reply Reply Quote 0
              • marcellocM
                marcelloc
                last edited by

                are you on latest package version?

                firewall rules for https are also ok?

                Treinamentos de Elite: http://sys-squad.com

                Help a community developer! ;D

                1 Reply Last reply Reply Quote 0
                • L
                  louis-m
                  last edited by

                  your hands are are quick as your avatar!!
                  firewall rules are ok. i can test this by setting up nat and it goes straight to the SERVER A or B so that part is working.

                  firewall logs show pfsense passing 80 to the wan and the realtime on the reverse proxy shows the internal sites getting hit with http.

                  firewall logs show pfsense passing 443 to the wan but the realtime on the reverse proxy shows nothing with regards to https.

                  1 Reply Last reply Reply Quote 0
                  • L
                    louis-m
                    last edited by

                    SOLVED…..

                    for some reason it didn't work until I specified 443 in the port settings. Then boom! off it went! Strange that you can leave the http port blank but not the https port.

                    1 Reply Last reply Reply Quote 0
                    • marcellocM
                      marcelloc
                      last edited by

                      @louis-m:

                      Strange that you can leave the http port blank but not the https port.

                      I'll check this field when I have time, thanks for the feedback. :)

                      Treinamentos de Elite: http://sys-squad.com

                      Help a community developer! ;D

                      1 Reply Last reply Reply Quote 0
                      • F
                        farrukhndm
                        last edited by

                        Hi,
                        Thanks for your post , My reverse proxy goes good without any problem . But the porblem is my mail server is running on https://mail.mydomain.com .i want that mail server should also available if user type http://mail.mydomain.com and reverse proxy redirect to https://mail.mydomian.com ???

                        http://mail.mydomian.com -> how to Redirect https://mail.mydomain.com

                        Please how it can be established.
                        Currently using Squid 3 Reverse proxy.

                        @nutt318:

                        I've been trying to figure out the Reverse Proxy with squid and I am not having any luck. I found this post (http://forum.pfsense.org/index.php/topic,51128.0.html) but it wasnt much help and from what I saw I think everything is setup properly. So, correct me if I'm wrong but the reverse proxy will look at the http header and will redirect you to the proper private address in cases where you only have 1 public IP and trying to host multiple websites.

                        Below is my setup, Hopefully someone can tell me what I have wrong.

                        Thanks!

                        Version
                        2.0.1-RELEASE (i386)
                        built on Mon Dec 12 18:24:17 EST 2011
                        FreeBSD 8.1-RELEASE-p6
                        You are on the latest version.

                        Squid3 Version
                        3.1.20 pkg 2.0.5_3

                        My domain is Registered through DreamHost, so I've setup a test1.mydomain.com to point to MyPublicIP and I setup test2.mydomain.com to point to the same MyPublicIP.

                        Now for the Reverse Proxy setup in pfSense.

                        [EDIT: removed unfetchable links causing password prompt -jimp]

                        1 Reply Last reply Reply Quote 0
                        • marcellocM
                          marcelloc
                          last edited by

                          Create an index.html on your internal http server redirecting http requests to https.

                          for example:
                          http://yourdomain.com -> http://192.168.1.1/ (index.html redirection to https://youdomain.com)
                          https://yourdomain.com -> https://your_internal_mail_server

                          Treinamentos de Elite: http://sys-squad.com

                          Help a community developer! ;D

                          1 Reply Last reply Reply Quote 0
                          • F
                            farrukhndm
                            last edited by

                            I think If we hitting our server directly on Public IP like mail.mydomain.com:80: 102.11.1.93 then its the responsibility of apache to switch http->https.

                            As per reverse proxy what i think we need some rule when http request come to pfsense it redirects to https://mail.mydomain.com .As mail.mydomain.com is already configured on https.

                            I think squid reverse proxy dosn't support http -> https redirection .As i tested i made rule

                            i create rule which dons't work for http ->https redirection but only work when i open https://mail.mydomain.com

                            Reverse proxy-> webserver:
                            on mail 10.10.10.110 443 HTTPS
                            MAPING:
                            on https mail https
                            URI:
                            https://mail.mydomain.com
                            http://mail.mydomain.com        ( mean simple http traffic goes to 443!! but it dosn't change http to https ?? )

                            1 Reply Last reply Reply Quote 0
                            • G
                              geijt
                              last edited by

                              Squid support redirecting traffic from HTTP to HTTPS, also for reverse-proxy.
                              I modified the squid-reverse package to support this configuration and requested a merge with the pfsense package.

                              With my modification you can enter hostname(s) to listen on, enter a regex for the path and the destination where you want the request to be redirected to.
                              HTTP/HTTPS protocols are both supported.

                              You can redirect requests from mail.mydomain.com (protocol HTTP selected) to https://mail.mydomain.com (like farrukhndm want)
                              In case of Microsoft Exchange redirecting from mail.mydomain.com and webmail.mydomain.com (both protocols selected) to https://webmail.mydomain.com/owa is also supported.
                              You also can use it to support the Microsoft Exchange Autodiscover HTTP to HTTPS redirect function

                              I think you can expect the updated package soon.

                              1 Reply Last reply Reply Quote 0
                              • marcellocM
                                marcelloc
                                last edited by

                                geijt,

                                Thanks for the contribution!

                                Does Mappings and Redirects can be done one one single config page?

                                Isn't it a bit confusing to config?

                                Treinamentos de Elite: http://sys-squad.com

                                Help a community developer! ;D

                                1 Reply Last reply Reply Quote 0
                                • G
                                  geijt
                                  last edited by

                                  Marcelloc,

                                  Probably it will be possible to merge the mappings and redirects to one page but because of the differences in the required values for both I think it will be more confusing then and it also will result in loss of flexibility/power.
                                  A redirect technically doesn't need a mapping (or web server), they can redirect to anything (e.g. pfsense.org)

                                  1 Reply Last reply Reply Quote 0
                                  • D
                                    daehnomel
                                    last edited by

                                    I need help with a different aspect of suid 2.  FYI- running latest pf build 2.02 (i386), with latest squid reverse pkg.  I have my reverse prxy configured to serve multiple backend web servers to a single (home) ip.  Both HTTP and HTTPS configured and working…with one exception, java.  Anyhting running a java applet, http or https either times out or fails.  I'm guessing this is not a URL issue.  JIC here is an example of my standard url REGEX (I use a sub-domain for each backend server) :  subdomain.domain.tld(.*)?

                                    Any suggestions would be appreciated.

                                    1 Reply Last reply Reply Quote 0
                                    • First post
                                      Last post
                                    Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.