将Nginx重定向到Wordpress Docker容器

问题描述

我的vps主机上有一个网络服务器Nginx,主根上有一个简单的html站点(例如:domain.com)。

我想使用端口8080上的wordpress将此Web服务器的端点重定向到docker容器。 端点必须是/ blog。

我在Nginx的虚拟主机上具有此配置(包括重定向到443端口):

server {

    listen 443 ssl http2 default_server;
    listen [::]:443 ssl http2 default_server;

    root /var/www/http/domain.com/public;

    index index.html index.htm index.Nginx-debian.html;

    server_name domain.com www.domain.com;

    #headers
    add_header Strict-Transport-Security    "max-age=31536000; includeSubDomains" always;
    add_header x-frame-options              SAMEORIGIN;
    add_header X-Content-Type-Options       nosniff;
    add_header X-XSS-Protection             "1; mode=block";
    
    #ssl
    ssl_protocols               TLSv1 TLSv1.1 TLSv1.2;
    ssl_ecdh_curve              secp384r1;
    ssl_ciphers                 "ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384 OLD_TLS_ECDHE_ECDSA_WITH_CHACHA20_poly1305_SHA256 OLD_TLS_ECDHE_RSA_WITH_CHACHA20_poly1305_SHA256";
    ssl_prefer_server_ciphers   on;
    ssl_certificate             /etc/ssl/private/domain.com.crt;
    ssl_certificate_key         /etc/ssl/private/domain.com.key;
    ssl_session_timeout         10m;
    ssl_session_cache           shared:SSL:10m;
    ssl_session_tickets         off;
    ssl_stapling                on;
    ssl_stapling_verify         on;
    

    location /blog {
            include  /etc/Nginx/mime.types;
            #proxy
            proxy_pass  http://localhost:8080;
            proxy_redirect     off;
            proxy_set_header Host $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-Host $server_name;
    }


}

server {

        listen 443 ssl http2;
        listen [::]:443 ssl http2;

        server_name domain.com www.domain.com;

        return 301 $scheme://$server_name$request_uri;

}

server {

        listen 80;
        listen [::]:80;

        server_name domain.com www.domain.com;

        location /blog {
           include  /etc/Nginx/mime.types;
           proxy_pass  http://localhost:8080;
        }

        return 301 https://$server_name$request_uri;
}

它不起作用。 我试图设置另一个名为blog.domain.com的虚拟主机,但是wp-login和wp-admin的某些功能不起作用(css,javascript,ssl证书均无效)。

谢谢。

解决方法

使用命令:Wordpress容器的docker inspect container_id获取容器ID的IP地址,然后:

proxy_pass http://ipaddress_of_container_ID:8080;