title: wordpress(nginx) https vs. http (HAproxy)
body: <p>I have problem with my wordpress connecting  through https.
  When I use http everything work properly and site looks like:
  <a href="http://i.stack.imgur.com/griy7.png" rel="nofollow">port 80 connection</a></p>
  
  <p>When I add https (port 443) it looks like:
  <a href="http://i.stack.imgur.com/WgnDb.png" rel="nofollow">port 443 connection</a></p>
  
  <p>Here is my infrastructure:</p>
  
  <p>Servers : Centos7
  HAproxy: 1.5.4
  Wordpress: 4.3.1 (no plugins)
  nginx: 1.6.3</p>
  
  <p>My HAproxy conf file:</p>
  
  <pre><code>chroot  /var/lib/haproxy
  daemon
  group  haproxy
  log  127.0.0.1 local2
  maxconn  4000
  pidfile  /var/run/haproxy.pid
  stats  socket /var/lib/haproxy/stats
  tune.ssl.default-dh-param  2048
  user  haproxy
  defaults
    log  global
    maxconn  8000
    mode  http
    option  redispatch
    option  forwardfor
    option  http-server-close
    option  httplog
    retries  3
    stats  enable
    timeout  http-request 10s
    timeout  queue 1m
    timeout  connect 10s
    timeout  client 1m
    timeout  server 1m
    timeout  check 10s
  frontend www
    bind *:80
    default_backend www-backend
    option http-server-close
    reqadd X-Forwarded-Proto:\ http
  frontend www-https
    bind *:443 ssl crt /etc/pki/tls/certs/haproxy.pem
    default_backend www-backend
    option http-server-close
    reqadd X-Forwarded-Proto:\ https
  backend www-backend
    balance roundrobin
    redirect scheme https if !{ ssl_fc }
    server wp1 192.168.56.33:80 check
    server wp2 192.168.56.34:80 check
  </code></pre>
  
  <p>My nginx.conf file:</p>
  
  <pre><code>user nginx;
  worker_processes auto;
  error_log /var/log/nginx/error.log;
  pid /var/run/nginx.pid;
  
  events {
      worker_connections 1024;
  }
  
      log_format format_json '{"time": "$time_iso8601", '
                          '"remote_addr": "$remote_addr, '
                          '"remote_user": "$remote_user", '
                          '"body_bytes_sent": $body_bytes_sent, '
                          '"request_time": $request_time, '
                          '"status": $status, '
                          '"request": "$request", '
                          '"request_method": "$request_method", '
                          '"http_referrer": "$http_referer", '
                          '"http_user_agent": "$http_user_agent"}';
  
      access_log  /var/log/nginx/access.log format_json;
  
      sendfile            on;
      tcp_nopush          on;
      tcp_nodelay         on;
      keepalive_timeout   65;
      types_hash_max_size 2048;
  
      include             /etc/nginx/mime.types;
      default_type        application/octet-stream;
  
      include /etc/nginx/conf.d/*.conf;
  </code></pre>
  
  <p>My wordpres.conf for nginx:</p>
  
  <pre><code>upstream php {
          server 127.0.0.1:9000;
  }
  
  server {
          listen 80 default_server;
  
          root /var/www/html/wordpress;
  
          index index.php;
  
          server_name wordpress;
  
          location / {
                  # This is cool because no php is touched for static content.
                  # include the "?$args" part so non-default permalinks doesn't break when using query string
                  try_files $uri $uri/ /index.php?$args;
          }
  
          location ~ \.php$ {
                  #NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
                  include fastcgi.conf;
                  fastcgi_intercept_errors on;
                  fastcgi_pass php;
          }
  
          location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
                  expires max;
                  log_not_found off;
          }
  }
  </code></pre>
  
  <p>I would be grateful for any help.</p>