【问题标题】:Redirect nginx to wordpress docker container将 nginx 重定向到 wordpress docker 容器
【发布时间】:2020-12-10 17:17:06
【问题描述】:

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

我想将此网络服务器的端点重定向到端口 8080 上带有 wordpress 的 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 nginx reverse-proxy nginx-reverse-proxy


    【解决方案1】:

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

    proxy_pass http://ipaddress_of_container_ID:8080;

    【讨论】:

    • 谢谢,但它给了我 502 Bad Gateway
    • 好的,我只更改了 ip 和域,但仍然相同:2020/08/21 13:34:54 [error] 16187#16187: *1 connect() failed (111:连接被拒绝)同时连接到上游,服务器:domain.com,请求:“GET /test HTTP/2.0”,上游:“docker_wp_ip:8080/test”,主机:“domain.com”。似乎在 docker 容器中搜索 /test
    • 你应该检查 domain.com/blog
    • 是的,现在我更改了端点以避免缓存问题。
    猜你喜欢
    • 2018-05-23
    • 2017-05-07
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    • 2021-12-27
    • 1970-01-01
    • 1970-01-01
    • 2019-03-11
    相关资源
    最近更新 更多