0

I have a nginx server which is serving different webservers on port 80 and 443 which works fine if i hit directly.

abc.com, zyx.com

 client ---->abc.com,zyx.com (on nginx)

Now i am trying to do the same via haproxy but unable to do so.

 client -----> abc.com, zyx.com (on haproxy) ----->nginx (abc.com, zyx.com)

The haproxy and nginx are on the same vpc so i want to further modify it to call on internal ip. Can the same be achieved?

Following is the config for haproxy

   global
    daemon
    maxconn 100000
    gid 99
    uid 99
    log /dev/log    local0
    log /dev/log    local1 notice
    nbproc 4
    pidfile /etc/haproxy/pid


   defaults
    log global
    mode http
    maxconn 100000
    option dontlognull
    option forwardfor except 127.0.0.1
    option http-server-close
    option httpclose
    option httplog
    option http_proxy
    option redispatch
    option logasap
    option log-separate-errors
    retries 3

    timeout http-request 86400
    timeout queue 86400
    timeout connect 86400
    timeout client 86400
    timeout server 86400
    timeout http-keep-alive 3000
    timeout check 2000

    errorfile 400 /etc/haproxy/errors/400.http
    errorfile 403 /etc/haproxy/errors/403.http
    errorfile 408 /etc/haproxy/errors/408.http
    errorfile 500 /etc/haproxy/errors/500.http
    errorfile 502 /etc/haproxy/errors/502.http
    errorfile 503 /etc/haproxy/errors/503.http
    errorfile 504 /etc/haproxy/errors/504.http


   frontend https-in
    bind *:443 ssl crt /etc/haproxy/ssl/*.pem
    reqadd X-Forwarded-Proto:\ https
    acl abc hdr(host) -i abc.com
    use_backend wow if abc

   frontend http
    bind *:80
    compression algo gzip
    compression type application/json text/html text/plain text/css
    reqadd X-Forwarded-Proto:\ http
    stats enable
    stats hide-version
    stats uri /stats
    stats realm Haproxy\ Statistics
    stats auth haproxy:haproxy
    stats refresh 10s 

    acl zyx hdr(host) -i zyx.com
    use_backend amazing if zyx

   wow
    server nginx someip:443 check
   amazing
    server nginx someip:80 check

Following are the config of nginx server

abc.com

         server {
      listen 443;
      server_name abc.com;
      ssl on;
      ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
      ssl_certificate /etc/nginx/ssl/*.crt;
      ssl_certificate_key /etc/nginx/ssl/*.key;

      location  / {
       root /location_of_webserver;
       proxy_set_header Host $host;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_connect_timeout      360;
       proxy_send_timeout         360;
       proxy_read_timeout         360;
      }
    }

zyx.com

    server {
            listen 80;
            server_name zyx.com;

            location  / {
              alias /location_of_webserver/;
              autoindex on;
              expires 24h;
             }
    }

1 Answers1

0

Try changing the following:

wow
server nginx someip:443 check
amazing
server nginx someip:80 check

To:

backend wow
server nginx ipaddress:443 check
backend amazing
server nginx ipaddress:80 check

If you can update your questions with log file errors it would be easier to identify the cause.

CrispyDuck
  • 215
  • 2
  • 5