首页 > 解决方案 > 用于 wordpress docker 的 Nginx 反向代理 SSL

问题描述

我很抱歉问了一个可能多余的问题,但是当我使用带有 ssl 的 nginx 反向代理服务时,我无法让 wordpress 工作。

当我输入 url http://domain.example.org时,它会将我重定向到https://domain.example.org:8000,说它不可用/

我的 wordpress 安装使用的是 docker,这里是 docker-compose.yml 的相关部分:

    heei-wp:
      depends_on:
        - heei-wp-db
      image: wordpress:apache
      ports:
        - "127.0.0.1:8000:80"
      restart: always
      volumes:
        - ./php.conf.ini:/usr/local/etc/php/conf.d/php.conf.ini
        - ./wp_data:/var/www/html
      env_file:
        - wp.env

这是 nginx 配置:

upstream wp-heei {
   server 127.0.0.1:8000;
}

server {
    if ($host = example.domain.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


   listen 80;
   server_name example.domain.com;
   location /.well-known {
            alias /var/www/example.domain.com/.well-known;
   }

server {
    server_name example.domain.com;
    listen [::]:443 ssl; #ipv6only=on; # managed by Certbot
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/example.domain.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/example.domain.com/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

    location / {
        proxy_pass         http://wp-heei;
        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;
        proxy_set_header   X-Forwarded-Proto https;
    }
}

最后是 wp-config.php

if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') {
        $_SERVER['HTTPS'] = 'on';
        define('WP_HOME', 'https://domain.example.org');
        define('WP_SITEURL', 'https://domain.example.org');
        define('FORCE_SSL_ADMIN', true);
        $_SERVER['SERVER_PORT'] = 443;
        $_SERVER['REMOTE_ADDR'] = $http_x_headers[0];
}

感谢人们的帮助!

标签: wordpressdockernginx

解决方案


推荐阅读