Рейтинг:0

Проксируйте веб-сайт из Docker через Nginx, не выступая в качестве локального хоста

флаг co

Как я могу проксировать веб-сайт из Docker через Nginx, не действуя как локальный хост?

Моя текущая установка состоит из хоста Ubuntu с парой контейнеров Docker с открытыми портами.Контейнеры Docker доступны только локально. Доступность в Интернете состоит из сервера Nginx, который проксирует контейнеры Docker на определенные поддомены.

В одном контейнере Docker я запускаю Wordpress. я вытащил его из Докер Хаб используя этот файл YML:

версия: «3.1»

Сервисы:

  вордпресс:
    имя_контейнера: myapp-cms
    изображение: вордпресс
    перезапуск: всегда
    порты:
      - 8087:80
    среда:
      WORDPRESS_DB_HOST: дб
      WORDPRESS_DB_USER: пример пользователя
      WORDPRESS_DB_PASSWORD: пример передачи
      WORDPRESS_DB_NAME: пример БД
    тома:
      - /srv/wordpress/cms:/var/www/html

  дБ:
    имя_контейнера: myapp-db
    изображение: MySQL: 5.7
    перезапуск: всегда
    среда:
      MYSQL_DATABASE: пример БД
      MYSQL_USER: пример пользователя
      MYSQL_PASSWORD: пример передачи
      MYSQL_RANDOM_ROOT_PASSWORD: '1'
    тома:
      - /srv/wordpress/db:/var/lib/mysql

Этот контейнер Docker предоставляет внутренний порт 8087, который я затем проксирую мой поддомен.мойдомен.com. Это файл конфигурации Nginx:

сервер {
        корень /var/www/mysubdomain.mydomain.com;
        индекс index.html index.htm index.nginx-debian.html;

        имя_сервера mysubdomain.mydomain.com;

        client_max_body_size 1000M;

        место расположения / {
                # try_files $uri $uri/ =404;
                proxy_pass http://localhost:8087;
        }

    слушать 443 ssl; # под управлением Certbot
    ssl_certificate /etc/letsencrypt/live/mydomain.com-0003/fullchain.pem; # под управлением Certbot
    ssl_certificate_key /etc/letsencrypt/live/mydomain.com-0003/privkey.pem; # под управлением Certbot
    включить /etc/letsencrypt/options-ssl-nginx.conf; # под управлением Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # под управлением Certbot
}
сервер {
    если ($ host = mysubdomain.mydomain.com) {
        вернуть 301 https://$host$request_uri;
    } # управляется Certbot


        слушать 80;

        имя_сервера mysubdomain.mydomain.com;
    вернуть 404; # под управлением Certbot
}

Проблема в том, что страница (в данном случае Wordpress) по-прежнему использует локальный: 8087 для каждой ссылки. Это уничтожает любую возможность щелкнуть что-либо, а также уничтожает загрузку библиотек CSS и JavaScript.

введите описание изображения здесь

РЕДАКТИРОВАТЬ 1:

Я добавил следующие две строки в wp-config.php:

определить('WP_HOME','https://mysubdomain.mydomain.com');
определить('WP_SITEURL','https://mysubdomain.mydomain.com');

Он успешно загружает страницу настройки, а также адаптирует доменное имя. Я могу успешно настроить WordPress, но как только я сохраняю настройки (имя пользователя, пароль, адрес электронной почты), браузер загружает пустую страницу. Вызов curl -X ПОЛУЧИТЬ https://mysubdomain.mydomain.com возвращает пустой ответ.

Рейтинг:1
флаг cg

Попробуйте установить Адрес сайта и Адрес WordPress .

  1. Перейти к Настройки >> Общие
  2. Установите адрес WordPress (URL) и адрес сайта, используя свое полное доменное имя

введите описание изображения здесь

Справка

Для получения дополнительной официальной информации: Документ WordPress

Socrates avatar
флаг co
Спасибо за информацию. Я могу загрузить только начальную страницу, но каждая ссылка на ней ведет на `http://localhost:8087/...`, что означает, что вход в систему невозможен. Затем я установил Docker WordPress локально на своем ноутбуке, затем установил адрес WordPress и адрес сайта на «https://mysubdomain.mydomain.com», а затем скопировал локальную базу данных и содержимое CMS на удаленный веб-сервер. . Хотя технически это должно быть слово, по какой-то причине этого не происходит. Страница вообще не загружается, а `curl -X GET https://mysubdomain.mydomain.com` вообще не отвечает.
Socrates avatar
флаг co
В мой первоначальный пост добавлено **EDIT 1** с конфигурацией, которая несколько работает в начале, но позже дает сбой (описано выше).

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

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