HUANGWANG'S BLOG

采用Docker搭建Wordpress后宿主机反代配置

最近接触到一个采用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
    example.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的配置参数的熟悉以及理解一些参数的用法,不然依赖搜索引擎都不知问题在哪以及如何下手。幸运的是也如期完成了该项工作。