简介
Docker安装的wordpress一般适用于性能比较富裕的vps或者vds,独服等等,不推荐在那种1核1G的vps上用docker,两层虚拟,对于某些小鸡性能损失还是比较大的。本来性能就捉襟见肘的机子,小马拉大车,硬是高负载,不知道的还以为24小时都在吃CC,DD呢。
docker安装的wordpress容器中,用的是Apache。Apache有很多好处,很多wordporess的插件例如缓存插件和安全设置插件都兼容apache,但对nginx很不友好。当然nginx也有很多优点,占用资源小,并发强等等,如标题所述使用nginx反代wordpress容器,鱼和熊掌或可兼得。不过我现在也是改成了nginx直装+W3 Total Cache缓存,还是没有必要去为了个apache装个容器,实际的效果并没有想象中那么美好,nginx自己足以。
小孩子才做选择。
如果直接在设置里映射端口,然后映射ssl证书和私钥路径就可以直接当作成品访问了,当然还得在宝塔中创建wordpress要用的数据库。但是如要用nginx反代,就得继续往下看。
1. 安装宝塔和docker
因为要装宝塔,我首选centos7,宝塔官网有一键脚本
Centos
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
安装完宝塔之后进入网页可视化操作界面,安装Nginx+MySQL,同时在宝塔软件里,安装免费的系统防火墙。
2. 安装docker
//首先安装curl
yum install curl -y
//安装docker ce
curl -sSL https://get.docker.com/ | sh
//查看docker是否运行
systemstl status docker
//安装portainer(提供docker可视化操作网页端)
docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock --name ui --restart=always docker.io/portainer/portainer
安装完portainer之后打开ip+端口,设置portainer,具体设置可以参考网上教程。
portainer中新建bridge类型网络,设定子网,网关等等.(Note! docker中容器只有使用新建的网络才能自定义ip地址)。
同时添加wordpress容器,设定IP,如 172.100.100.100,映射容器端口80。
3. 配置网站
然后在宝塔中添加网站域名,填上反代容器的ip+端口 如172.100.100.100:80。
此时不要将域名解析到ip,只需要在系统host文件里将域名指向服务器ip即可。(Note! 若将域名解析到ip,会在很多网站留下历史解析记录,即使之后套上cdn,还是会被别人查到然后直接攻击服务器。)
进入域名进行初始设置,数据库如果连接不上请在宝塔防火墙里开放3306端口,并在宝塔的防火墙插件中设置仅允许容器的ip访问。
进入portainer中wordpress容器的命令行界面,编辑wp-config.php,在刚开始的一堆注释下面的空白处,加入
define('FORCE_SSL_ADMIN', true);
if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false)
$_SERVER['HTTPS']='on';
同时,在宝塔反代配置中的两个location部分添加
proxy_set_header X-Forwarded-proto https;
这时,宝塔网站设置中打开强制https,网站就能正常全站https访问了。
在dns解析商处把域名解析到cdn(例如解析到cloudflare,不过可以考虑国内访客解析到对国内友好的cdn,国外则解析到cf的cname),当然猛人也可以直接解析到源服务器(想被爆菊的朋友都会这么干)。
另外,想对容器内的php进行设置的话,进入容器的命令行界面,在/usr/local/etc/php/conf.d/目录下新建custom.ini,然后进行自定义设置,例如
upload_max_filesize = 64M
post_max_size = 64M
需要在容器中安装apache模块的话,也很简单,例如mod_headers: 在容器内cp /etc/apache2/mods-available/headers.load /etc/apache2/mods-enabled/
然后重启容器之后就有了。
4. wp插件
wp super cache 对于apache很友好,不需要在插件中额外设定。
All In One WP Security 很好用的安全插件,里面可以设定关闭wp rest api。另外它的很多安全设定是基于apache的,如果只有nginx,则即使勾选都完全无效。
WPvivid Backup Plugin 继几个有名的备份还原迁移功能的插件都开始高额收费之后,这个插件就成了我迁移倒腾的必备插件。
另用wpscan扫了下暂时没发现什么大漏洞,建议各位看官也用wpscan扫一下自己网站,看看漏洞,或者尝试下爆破自己网站,看看安全做的怎么样。
博主您好,我看到第三部跟着做的,不会了,请问具体怎么设置反代呀,谢谢!
@Yuankun Wang 抱歉,我没有写的很详细,这个教程写的比较简略,照着做后面问题也挺多,主要是方便我自己以后翻来看。。你可以搜一下宝塔反代关键词,图形界面操作一下就行,这一步不难,应该有很多例子。不过我现在也是改成了nginx直装+W3 Total Cache缓存,还是没有必要去为了个apache装个容器。