HTTPS in WordPress behind a NGINX Reverse Proxy with SSL Offload
Enabling HTTPS in WordPress behind a NGINX Reverse Proxy SSL Offload
1. Leave the WordPress Address (URL) as HTTP
2. Change the Site Address (URL) to HTTPS
Note: If you mess up the above settings and cannot reload WP, then you may change this in the options
table in the WP database
3. Add these lines to wp-config.php (I added it at the beginning)
// Added for HTTPS behind a NGINX Reverse Proxy with SSL Offload if ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') $_SERVER['HTTPS']='on'; if (isset($_SERVER['HTTP_X_FORWARDED_HOST'])) { $_SERVER['HTTP_HOST'] = $_SERVER['HTTP_X_FORWARDED_HOST']; }
4. I have the below proxy header settings in my NGINX (for all sites):
### proxy-header ### proxy_set_header Accept-Encoding ""; proxy_set_header Host $http_host; proxy_set_header X-Forwarded-By $server_addr:$server_port; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; map $scheme $msiis { http off; https on; } proxy_set_header Front-End-Https $msiis;
Reference: https://www.variantweb.net/blog/wordpress-behind-an-nginx-ssl-reverse-proxy/