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

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

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

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

version: '3.1'

services:

  wordpress:
    container_name: myapp-cms
    image: wordpress
    restart: always
    ports:
      - 8087:80
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: exampleuser
      WORDPRESS_DB_PASSWORD: examplepass
      WORDPRESS_DB_NAME: exampledb
    volumes:
      - /srv/wordpress/cms:/var/www/html

  db:
    container_name: myapp-db
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_DATABASE: exampledb
      MYSQL_USER: exampleuser
      MYSQL_PASSWORD: examplepass
      MYSQL_RANDOM_ROOT_PASSWORD: '1'
    volumes:
      - /srv/wordpress/db:/var/lib/mysql

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

server {
        root /var/www/mysubdomain.mydomain.com;
        index index.html index.htm index.nginx-debian.html;

        server_name mysubdomain.mydomain.com;

        client_max_body_size 1000M;

        location / {
                # try_files $uri $uri/ =404;
                proxy_pass      http://localhost:8087;
        }

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/mydomain.com-0003/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/mydomain.com-0003/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
    if ($host = mysubdomain.mydomain.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


        listen 80;

        server_name mysubdomain.mydomain.com;
    return 404; # managed by Certbot
}

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

enter image description here

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

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

define('WP_HOME','https://mysubdomain.mydomain.com');
define('WP_SITEURL','https://mysubdomain.mydomain.com');

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

0
задан 13 October 2021 в 17:02
0 ответов

Теги

Похожие вопросы