Рейтинг:2

Заставить Wordpress+Apache работать за обратным прокси-сервером nginx

флаг mp

Я пытаюсь настроить следующее:

  • Docker-контейнер с nginx на локальном хосте в качестве обратного прокси-сервера для Wordpress, прослушивающий localhost:80. Он также используется в качестве обратного прокси-сервера для других микросервисов.
  • Контейнер(ы) docker-compose с Wordpress+Apache, прослушивающий localhost:4261. Docker-compose.yaml был взят из официальный пример. Директива «ports» была изменена с «8000:80» -> «4261:80».

Я пытался следовать многочисленным руководствам и средствам устранения неполадок, но nginx продолжает отвечать «111 в соединении отказано». Подобные вопросы (которые не сработали для меня): здесь и здесь.

Любые идеи?

конфиг нгинкс:

сервер {
    # Слушаем HTTPS
    слушать [::]:443 ssl ipv6only=on;
    слушать 443 ssl; 

    имя_сервера ${NGINX_URL};
    ssl_certificate /certs/certificate.pem;
    ssl_certificate_key /certs/private.key;
    
    местоположение / ВП / {
        переписать ^/wp/?(.*)$ /$1 break;
        прокси_пароль http://localhost:4261/;
        прокси_http_версия 1.1;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $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-Proto $ схема;
        proxy_set_header X-Forwarded-Port 443;
        proxy_set_header Хост $http_host;
        proxy_set_header Обновить $http_upgrade;
        proxy_set_header Соединение "Обновление";
        proxy_pass_request_headers включен;
    }
    ...
}

wp-config.php:

...
// Если мы находимся за прокси-сервером и используем HTTPS, нам нужно предупредить WordPress об этом факте
// см. также https://wordpress.org/support/article/administration-over-ssl/#using-a-reverse-proxy
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false) {
    $_SERVER['HTTPS'] = 'включено';
}
...
Рейтинг:1
флаг in

Ваш nginx пытается подключиться к локальному хосту внутри контейнер. Вы должны либо использовать хост-сеть для контейнера, либо вам нужно связать контейнер nginx в контейнер WordPress.

В файле docker-compose это будет:

внешняя ссылка:
  - вордпресс: вордпресс

Затем вы можете использовать

прокси_пароль http://wordpress/

в вашей конфигурации nginx. Вам не нужно открывать какой-либо порт в контейнере WordPress.

флаг mp
Не решил мою проблему, но указал мне правильное направление (размещение обоих проектов в одной сети). Спасибо!

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.