采用Docker搭建Wordpress后宿主机反代配置
Aug 6, 2020
最近接触到一个采用wordpress建站的任务,在内容构建完成后,正式部署时遇到了不少的问题,最后采用Caddy反代解决。
思路
网站搭建完成后,依据以往的建站经验,首先想到的是采用nginx做一个简单的反代即可,不曾想到反代wordpress时需要考虑对加载的资源URL进行替换,可惜ngnix配置知识半桶水,不知如何下手,通过搜索引擎多次寻求解决方案未果时,想到以前采用Caddy反代Discord时也遇到过类似的问题,遂采用当初Caddy的方案入手解决,顺利实现反代。
具体步骤
- 配置好Wordpress,此时wordpress中的URL地址均为http://
: - 下载Caddy,并链接至
/usr/local/bin
- 创建CaddyFile,完善配置,如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21example.com {
tls <email>
proxy / http://<IP>:<Port> {
transparent
header_upstream Host {proxy_host}
header_upstream X-Real-IP {remote}
header_upstream X-Forwarded-For {remote}
header_upstream X-Forwarded-Proto {scheme}
header_downstream -Access-Control-Allow-Origin
header_upstream Accept-Encoding identity
header_upstream Origin http://<IP>:<Port>
header_downstream -Content-Security-Policy
websocket
}
filter rule {
content_type text/.*
search_pattern <IP>:<Port>
replacement example.com
}
} - 运行命令
[sudo] caddy --conf CaddyFile
,执行后会自动生成证书,并开启Automatic HTTPS特性。 - 此时网站已经反代成功,不过还存在一些小问题,比如某些页面中存在http的资源URL,会导致资源无法加载,搜索得到该解决方案,采用了其中的一种,在网页的Head中加入如下meta,因为我能确保所有升级后的https链接有效。
1
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
- 这样,网站的反代工作基本完成。
总结
本次反代实践在nginx上花费了太多的时间,最后又不得不放弃,不得不悔恨对ngnix使用原理以及浏览器调试信息分析不熟悉,需加强对nginx的配置参数的熟悉以及理解一些参数的用法,不然依赖搜索引擎都不知问题在哪以及如何下手。幸运的是也如期完成了该项工作。