Làm cách nào tôi có thể ủy quyền một trang web từ Docker thông qua Nginx mà không hoạt động như máy chủ cục bộ?
Thiết lập hiện tại của tôi bao gồm một máy chủ Ubuntu với một vài bộ chứa Docker có cổng bị lộ.Bộ chứa Docker chỉ được hiển thị cục bộ. Sự tiếp xúc trên Internet bao gồm một máy chủ Nginx ủy quyền các bộ chứa Docker cho các tên miền phụ nhất định.
Trong một vùng chứa Docker, tôi chạy Wordpress. tôi kéo nó từ trung tâm docker sử dụng tệp YML này:
phiên bản: '3.1'
dịch vụ:
báo chí:
container_name: myapp-cms
hình ảnh: wordpress
khởi động lại: luôn luôn
cổng:
- 8087:80
môi trường:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: người dùng ví dụ
WORDPRESS_DB_PASSWORD: ví dụ
WORDPRESS_DB_NAME: ví dụdb
khối lượng:
- /srv/wordpress/cms:/var/www/html
đb:
container_name: myapp-db
hình ảnh: mysql:5.7
khởi động lại: luôn luôn
môi trường:
MYSQL_DATABASE: ví dụdb
MYSQL_USER: người dùng ví dụ
MYSQL_PASSWORD: ví dụ
MYSQL_RANDOM_ROOT_PASSWORD: '1'
khối lượng:
- /srv/wordpress/db:/var/lib/mysql
Bộ chứa Docker này hiển thị cổng nội bộ 8087 mà sau đó tôi ủy quyền cho mysubdomain.mydomain.com
. Đây là tệp cấu hình Nginx:
người phục vụ {
gốc /var/www/mysubdomain.mydomain.com;
chỉ mục index.html index.htm index.nginx-debian.html;
server_name mysubdomain.mydomain.com;
client_max_body_size 1000M;
địa điểm / {
# try_files $uri $uri/ =404;
proxy_pass http://localhost:8087;
}
nghe 443 ssl; # được quản lý bởi Certbot
ssl_certificate /etc/letsencrypt/live/mydomain.com-0003/fullchain.pem; # được quản lý bởi Certbot
ssl_certificate_key /etc/letsencrypt/live/mydomain.com-0003/privkey.pem; # được quản lý bởi Certbot
bao gồm /etc/letsencrypt/options-ssl-nginx.conf; # được quản lý bởi Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # được quản lý bởi Certbot
}
người phục vụ {
nếu ($host = mysubdomain.mydomain.com) {
trả lại 301 https://$host$request_uri;
} # được quản lý bởi Certbot
nghe 80;
server_name mysubdomain.mydomain.com;
trả lại 404; # được quản lý bởi Certbot
}
Vấn đề là trang (trong trường hợp này là Wordpress) vẫn sử dụng máy chủ cục bộ:8087
cho mỗi liên kết. Điều này phá hủy mọi khả năng nhấp vào thứ gì đó và cũng phá hủy tải thư viện CSS và JavaScript.
CHỈNH SỬA 1:
Tôi đã thêm hai dòng sau vào wp-config.php
:
xác định ('WP_HOME','https://mysubdomain.mydomain.com');
xác định ('WP_SITEURL','https://mysubdomain.mydomain.com');
Nó tải thành công trang thiết lập ngay và cũng điều chỉnh tên miền. Tôi có thể thiết lập thành công WordPress, nhưng ngay sau khi tôi lưu thiết lập (tên người dùng, mật khẩu, email), trình duyệt sẽ tải một trang trống. gọi curl -X NHẬN https://mysubdomain.mydomain.com
trả về một phản hồi trống.