Nginx – WordPress behind nginx reverse proxy doesnt work in https

dockernginxreverse-proxysslWordpress

I'm trying to run wordpress on a docker based cloud. The setup is:

Wordpress Cloud Setup

There is a server running a mysql array, which serves a container with WordPress Running on Nginx. The setup is copied from this dockerfile. The goal of this setup is to achieve a high throughput and be compatible with our cloud setup.

The wordpress container has a local ip, in the same subnet as the mysql array and Nginx reverse proxy, and a public port to run http (not https).

The reverse proxy is configured to run SSL for the wordpress container. Navigation works on both http and https, but when I try to log in the dashboard with HTTPS, I get this error:

You do not have sufficient permissions to access this page.

The only meaningful error I found happens when I log in on the dashboard, on HTTP:

[04-Nov-2014 23:16:13 UTC] PHP Notice: Undefined index: HTTP_X_FORWARDED_PROTO in /usr/share/nginx/www/wp-config.php on line 86

but the dashboard works correctly on http.

In WordPress configuration file I had to add the line:

/* SSL Proxy */

if ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') $_SERVER['HTTPS']='on';

And I think this is the culprit. I found this tip in the official wordpress documentation, and without it HTTPS doesnt load the CSS, either logged or not logged. I think maybe I should modify this line to suit my configuration?

Either this, or the nginx reverse proxy configuration file, I have no idea.

The nginx configuration file in the wordpress + nginx container is quite standard, and it's copied from here.

Please help me 😀

Best Answer

I had some problem, I resolved in this way:

in my wp-config.php,

I added these lines:

if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false) $_SERVER['HTTPS']='on';

BEFORE everything in the code.

Hope it helps!

Related Topic