在wordpress服务器上配置uptime-kuma—apache反向代理

今天想做一个状态界面,但是踩了很多坑,写一篇 blog 记录一下

服务器环境:ubuntu20.04-apache2-wordpress

一开始,我想使用 apache 监听 80 端口,然后把 wordpress 和 uptime kuma 分别绑到 3001 和 3002

后来发现假如要改 wordpress 的端口是一件很麻烦的事 ——wordpress 能不改就不改,无数的 bug 等着你

于是,我这样编写了 apache 的配置文件

img.png

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<VirtualHost *:80>
ServerName xy-cloud.xyz
DocumentRoot /var/www/html
</VirtualHost>

<VirtualHost *:80>
ServerName status.xy-cloud.xyz

ProxyPass / http://localhost:3001/
RewriteEngine on
RewriteCond %{HTTP:Upgrade} websocket [NC]
RewriteCond %{HTTP:Connection} upgrade [NC]
RewriteRule ^/?(.*) "ws://localhost:3001/$1" [P,L]
</VirtualHost>

至于为什么要这样写,听我细细道来

首先,毫无疑问的,为了不更改端口,我们监听 80 端口,假如是我的 blog 域名,就直接使用默认的 wordpress 路径

但是在配置 uptime kuma 的时候,我踩了很多坑

  1. uptime kuma 需要配置 websocket 反向代理,我一开始没有加,后来翻到 https://github.com/louislam/uptime-kuma/wiki/Reverse-Proxy 这个 wiki 界面,他给出了示例,于是我就更改了配置文件成这样

  2. 不过,还没完!问题在于,我的 blog 使用了 cloudflare cdn 加速,它的设置是有一个人类验证来保护,所以 uptime kuma 访问我的 blog 会 403 错误
    于是,我通过配置 cloudflare WAF 解决了这个问题

img_1.png

img_2.png

img_3.png

这样,我们就可以解决这个问题,原理是我的服务器 ip 访问 blog 时,跳过验证

同理,我们也可以通过这个功能,让自己也可以免于 cloudflare 的人类验证,我推荐使用请求头,然后使用 ModHeader 给自己添加一个请求头(自己设置一个密钥)

P.S. 我在这中间查资料的时候发现,这个验证会让搜索引擎的 bot 没法搜索到你!!所以要在 WAF 里加一个针对搜索引擎 bot 的跳过