Wordpress behind nginx reverse proxy doesnt work in https
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 videos on Youtube
Mascarpone
Web Scientist, Applied mathematician, usability engineer, project manager.
Updated on September 18, 2022Comments
-
Mascarpone over 1 year
I'm trying to run wordpress on a docker based cloud. The setup is:
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 :D
-
Gekkie over 9 yearsIt seems your nginx proxy doesnt send the correct headers (or the nginx inside the WP container doesnt forward that header into PHP... ) Try debugging the output of the NGINX reverse proxy and then looking into what comes into the WP container
-
Mascarpone over 9 yearshow would you do that?
-
Gekkie over 9 yearsreplace the various backends to a simple PHP script which dumps the headers (
$_SERVER
i.e.) and see what happens... It might be that one of you nginx-servers just messes up the headers? -
Mascarpone over 9 yearswhere do I find them? I guess it was the default ones
-
Cyle over 8 years@Mascarpone Did you ever figure this one out?
-
user181157 about 8 yearssame problem here ... @Mascarpone did you manage to solve it?
-
-
pdwalker over 7 yearsif the line was put at the bottom of the config file, there will be a problem. this is what fixed the problem for me.
-
Miguel Mota over 6 yearswas struggling with this for hours, until putting it before everything in the code, that did the trick! thanks!
-
Giordano over 6 yearsyes, the placement of the snippet was crucial! Thanks :)
-
Community about 2 yearsYour answer could be improved with additional supporting information. Please edit to add further details, such as citations or documentation, so that others can confirm that your answer is correct. You can find more information on how to write good answers in the help center.