宝塔Nginx反代docker安装的wordpress容器

2020年8月14日 4162点热度 5人点赞 2条评论

简介

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扫一下自己网站,看看漏洞,或者尝试下爆破自己网站,看看安全做的怎么样。

Qiui

这个人很懒,什么都没留下

订阅评论
提醒
guest
2 评论
最新
最旧 最多投票
内联反馈
查看所有评论
Yuankun Wang
游客
Yuankun Wang
2022年8月11日 16:53

博主您好,我看到第三部跟着做的,不会了,请问具体怎么设置反代呀,谢谢!

2
0
希望看到您的想法,请您发表评论x