WordPress Docker over NGINX Обратный прокси-сервер SSL не работает должным образом - PullRequest
0 голосов
/ 04 августа 2020

Когда я использую NGINX для создания обратного прокси для контейнера WordPress Docker, WordPress указывает WordPress Address (URL) и Site Address (URL) как https://hiddenurl.com:443. Итак, все мои ссылки содержат порт 443, и если я удалю этот порт, веб-сайт больше не будет доступен из-за бесконечного перенаправления l oop.

Я ввел в wp-config.php, что SSL должен быть активируется через $_SERVER['HTTPS'] = 'on';.

NGINX Config:

    location ~ /(?<wppath>.*) {
        rewrite ^/(.*) /$1 break;
        client_max_body_size 100M;
        proxy_pass http://127.0.0.1:7676/$wppath$is_args$args;
        proxy_http_version 1.1;
        proxy_set_header Host $host:$server_port;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-forwarded protocol https;
        proxy_set_header upgrade $http_upgrade;
        proxy_set_header Connection "upgrade
    }

Это заставляет домен hiddenurl.com работать, но hiddenurl.com/about перенаправляет на 127.0.0.1/about.

Перенаправление, похоже, исходит от WordPress: Заголовки ответа

1 Ответ

0 голосов
/ 04 августа 2020

Я решил это, используя это как nginx config:

    location / {
        proxy_pass         http://127.0.0.1:7676;
        proxy_redirect     off;
        proxy_set_header   Host $host;
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Host $server_name;
        proxy_set_header   X-Forwarded-Proto https;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_read_timeout 86400;

      }

И добавьте это в начало wp-config.php

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

if (isset($_SERVER['HTTP_X_FORWARDED_HOST'])) {
    $_SERVER['HTTP_HOST'] = $_SERVER['HTTP_X_FORWARDED_HOST'];
}
...