1、前言
在本地n3540小主机上使用docker安装wordpress。主要遇到的问题有如下:
- 上传主题文件时提示上传文件大小限制。推荐看这篇文章
- frp内网穿透后公网无法访问
本期主要解决frp公网访问问题。
- 搭建过程程略,给出关键的docker-compose.yml文件。搭建步骤
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| version: '3.0'
services: db: image: mysql:8.0 container_name: wordpress-db restart: unless-stopped command: --max-binlog-size=200M --expire-logs-days=2 environment: MYSQL_ROOT_PASSWORD: aPvpUn4d29www MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: aPvpUn4d29 volumes: - './db:/var/lib/mysql' networks: - default
app: image: wordpress:6.5 container_name: wordpress-app restart: unless-stopped ports: - 8989:80 environment: WORDPRESS_DB_HOST: db WORDPRESS_DB_NAME: wordpress WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: aPvpUn4d29 volumes: - './app:/var/www/html' links: - db:db depends_on: - redis - db networks: - default
redis: image: redis:alpine container_name: wordpress-redis restart: unless-stopped volumes: - ./redis-data:/data networks: - default
networks: default: name: wordpress
|
2、解决公网无法访问问题
2.1、wordpress主目录下修改wp-config.php文件
在 require_once ABSPATH . ‘wp-settings.php’; 之前粘贴以下代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| if(is_numeric(substr($_SERVER['HTTP_HOST'],0,1))) { $http_type = 'http://'; } else { $http_type = 'https://';
$_SERVER['HTTPS'] = 'on'; define('FORCE_SSL_LOGIN', true); define('FORCE_SSL_ADMIN', true); }
define('WP_SITEURL', $http_type . $_SERVER['HTTP_HOST']); define('WP_HOME', $http_type . $_SERVER['HTTP_HOST']);
|
保存修改好的文件并重启wordpress
2.2、WordPress后台配置
设置WordPress Address
和Site Address
为反向代理服务地址(HTTPS协议)。在设置,wordpress地址和站点地址填上反代好的地址。

3、问题
以上方法可以解决使用公网域名的https协议访问,但是本地ip+端口的http协议却无法访问。
4、参考资料
内网穿透下的 wordpress 地址冲突问题与 https 下的后台登陆问题
WordPress 相对路径配置(HTTPS、反向代理)
docker中宿主机与容器(container)互相拷贝传递文件的方法
docker中修改wordpress的上传文件限制