Как я могу проксировать веб-сайт из 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.
РЕДАКТИРОВАТЬ 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
возвращает пустой ответ.