最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

Wordpress docker enable ssl - Stack Overflow

programmeradmin2浏览0评论

I'm trying to run a wordpress project with dockers, but I don't know how to configure wordpress to use https. cannot get https working with wordpress, my docker-compose.yml:

version: '3'
services:
  database:
    image: mysql:8.4
    container_name: database
    volumes:
      - database_data:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: ********
      MYSQL_DATABASE:  wp_database
      MYSQL_USER: wp_user
      MYSQL_PASSWORD: ********
    networks:
      - wp_network

  wordpress:
    depends_on:
      - database
    image: wordpress:latest
    container_name: wordpress
    volumes:
      - ./wordpress:/var/www/html
    ports:
      - "8080:80"
    restart: always
    environment:
      WORDPRESS_DB_HOST: database:3306
      WORDPRESS_DB_USER: wp_user
      WORDPRESS_DB_PASSWORD:  ********
      WORDPRESS_DB_NAME: wp_database
    networks:
      - wp_network
  nginx:
    image: nginx:latest
    container_name: nginx
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx/conf.d:/etc/nginx/conf.d
      - ./certs/my.website.cer.crt:/etc/nginx/ssl/cert.pem 
      - ./certs/my.website.key:/etc/nginx/ssl/key.pem 
    depends_on:
      - wordpress
    networks:
      - wp_network  
volumes:
  database_data:

networks:
  wp_network: 
    driver: bridge 

my nginx.conf

server {
    listen 80;
    server_name my.website;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name my.website;

    ssl_certificate /etc/nginx/ssl/cert.pem;
    ssl_certificate_key /etc/nginx/ssl/key.pem;

    location / {
        proxy_pass http://wordpress:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

but the website results in a 502 Bad Gateway and docker logs nginx says:

2025/01/29 08:28:49 [error] 20#20: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 10.50.15.17, server: my.website, request: "GET / HTTP/1.1", upstream: "http://172.29.0.3:8080/", host: "my.website"

when I go to the localhost website on port 8080 it works: links http://localhost:8080 works

I'm trying to run a wordpress project with dockers, but I don't know how to configure wordpress to use https. cannot get https working with wordpress, my docker-compose.yml:

version: '3'
services:
  database:
    image: mysql:8.4
    container_name: database
    volumes:
      - database_data:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: ********
      MYSQL_DATABASE:  wp_database
      MYSQL_USER: wp_user
      MYSQL_PASSWORD: ********
    networks:
      - wp_network

  wordpress:
    depends_on:
      - database
    image: wordpress:latest
    container_name: wordpress
    volumes:
      - ./wordpress:/var/www/html
    ports:
      - "8080:80"
    restart: always
    environment:
      WORDPRESS_DB_HOST: database:3306
      WORDPRESS_DB_USER: wp_user
      WORDPRESS_DB_PASSWORD:  ********
      WORDPRESS_DB_NAME: wp_database
    networks:
      - wp_network
  nginx:
    image: nginx:latest
    container_name: nginx
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx/conf.d:/etc/nginx/conf.d
      - ./certs/my.website.cer.crt:/etc/nginx/ssl/cert.pem 
      - ./certs/my.website.key:/etc/nginx/ssl/key.pem 
    depends_on:
      - wordpress
    networks:
      - wp_network  
volumes:
  database_data:

networks:
  wp_network: 
    driver: bridge 

my nginx.conf

server {
    listen 80;
    server_name my.website;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name my.website;

    ssl_certificate /etc/nginx/ssl/cert.pem;
    ssl_certificate_key /etc/nginx/ssl/key.pem;

    location / {
        proxy_pass http://wordpress:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

but the website results in a 502 Bad Gateway and docker logs nginx says:

2025/01/29 08:28:49 [error] 20#20: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 10.50.15.17, server: my.website, request: "GET / HTTP/1.1", upstream: "http://172.29.0.3:8080/", host: "my.website"

when I go to the localhost website on port 8080 it works: links http://localhost:8080 works

Share Improve this question asked Jan 29 at 9:41 Floris van den BergFloris van den Berg 92 bronze badges
Add a comment  | 

1 Answer 1

Reset to default 0

solved, just configure apache2 in the wordpress container, leave out nginx

copy your ssl certicate files to the docker

docker cp certfile.crt certfile.key wordpress:/etc/certs

login the container

a2enmod ssl
a2ensite default-ssl.conf

edit /etc/apache2/sites-available/default-ssl.conf

SSLCertificateFile /etc/cert/certfile.crt
SSLCertificateKeyFile /etc/cert/certfile.key

restart apache

service apache2 restart
发布评论

评论列表(0)

  1. 暂无评论