如何设置反向代理(Nginx 和 Apache 的分步操作)

已发表: 2020-08-14

反向代理位于 Web 服务器前面,并在所有请求到达源服务器之前接收它们。 它的工作方式类似于转发代理,除了在这种情况下它是使用代理的 Web 服务器而不是用户或客户端。 反向代理通常用于增强 Web 服务器的性能、安全性和可靠性。

例如,您可以在服务器 A 上的example.com域上托管一个非 WordPress 站点,并在服务器 B 上托管在example.com/blog URL 上的 WordPress 上运行其博客。您可以通过为服务器托管您的主站点。 您可以配置反向代理,将博客的请求重定向到不同的服务器(例如,Kinsta 等托管 WordPress 主机)。

在本文中,您将了解反向代理服务器的基础知识、它们的工作原理、它们的主要优点以及如何使用它们来加速和保护您的 WordPress 站点。

兴奋的? 开始吧!

什么是反向代理?

要了解什么是反向代理服务器,您首先需要了解它的作用并熟悉它的所有相关术语。

当您通过输入域名或单击链接正常浏览网页时,您的浏览器/设备会直接连接到网站的服务器并开始下载其资源。

显示通常如何浏览 Internet 的信息图
通常如何在 Internet 上浏览

如果您想从您访问的网站匿名化您的 IP 地址,那么您可以使用代理服务器首先将您的所有请求发送给它。 它会将您的请求转发到 DNS 解析器,然后从其源服务器下载网站的资源。

之后,它会将这些资源传递给您的设备。 这称为转发代理。

显示转发代理如何工作的信息图
转发代理服务器的工作原理

您对网站完全隐藏,因为它认为您的请求来自转发代理。

除了增强用户隐私外,转发代理主要用于绕过地理内容限制。 例如,如果您想观看在您所在地区被阻止的视频,您可以使用转发代理和 IP 地址,在该 IP 地址上可以观看该视频。

转发代理的工作方式与虚拟专用网 (VPN) 几乎相同,但它们是具有独特用例的不同技术(尽管它们有时可能重叠)。

反向代理服务器与正向代理服务器

反向代理服务器充当源服务器的前端,以保持匿名性并增强安全性,就像用户/客户端如何使用正向代理来实现相同目的一样。 它确保没有用户或客户端直接与源服务器通信。

显示反向代理如何工作的信息图
反向代理服务器的工作原理

正向代理与反向代理之间的区别很小,但它们的工作方式不同。

两者可以一起工作,因为它们的功能之间没有重叠。 通常,用户/客户端使用正向代理,而源服务器使用反向代理。

显示正向代理与反向代理之间差异的信息图
正向代理与反向代理服务器

由于服务器管理员可以控制反向代理的工作方式,因此您可以使用它来启用许多有用的功能。

我们将在本文后面列出它的所有好处。

为什么使用反向代理?

许多企业,尤其是大型企业,使用定制的网站,这些网站是根据他们的独特需求量身定制的,而不是在 WordPress 上运行。 一些例子包括银行和保险网站。

在其他情况下,企业可能会将其网站托管在不允许他们安装任何外部软件(例如 WordPress)的外部服务上。 通常,这些是使用 Shopify 等电子商务平台的中小型零售商。

由于 WordPress 具有强大的 CMS 功能,许多企业,包括拥有定制网站的大型企业,可能更喜欢使用 WordPress 托管他们的博客。

解决此问题的一种方法是在主网站的子域上安装 WordPress,并构建导航菜单,以便用户可以轻松地在主网站和博客之间切换。

由于子域表现为一个独特的域,它会影响您网站的 SEO。 尽管 Google 对子域和子目录一视同仁,但如果网站托管在子域中,则优化网站的搜索引擎排名要比托管在子目录中要花费更多的精力。

在同一域名下托管替代网站的两种方法
在网站上托管博客的两种方法

谷歌重申它平等对待子域和子目录,但一些 SEO 专家不同意。 即使它不影响网站的 SEO,托管在子目录中的网站也更容易维护。

这就是为什么您可以使用反向代理将请求重定向到托管在单独服务器上的站点博客。 例如,银行可以在其服务器上安全地托管其主要网站,但他们也可以在 Kinsta 等托管 WordPress 主机上单独托管其 WordPress 驱动的博客。

反向代理服务器用例示例
反向代理用例示例

将两个不同的站点统一在一个域名下是使用反向代理的主要优势之一。 它可以帮助品牌保持其网站的组织性、专业性并保持信誉。

了解反向代理如何提高 ️ 性能、安全性和可靠性……所有内容都在本指南中 ️ Click to Tweet

使用反向代理的好处

除了上述用例之外,反向代理还具有许多其他好处。 下面的部分讨论了它们的一些主要优点。

负载均衡

单个源服务器无法处理具有数百万每日唯一访问者的网站的所有传入流量。 在这些情况下,您可以在包含许多服务器的池中巧妙地分配流量。 通常,所有服务器将托管相同的内容以消除单点故障,从而使网站更加可靠。

反向代理是一种很好的设置方式,因为它可以在传入流量到达源服务器之前接收它。 如果源服务器过载或完全失败,它可以将流量分配给其他服务器,而不会影响站点功能。

反向代理还可以将传入请求定向到多个服务器,每个服务器执行其优化的特定功能。 然后反向代理可以收集来自所有服务器的响应并将它们传递给客户端。

由于我们主要使用大多数流行的反向代理来进行负载平衡,因此它们也被称为负载平衡器

全局服务器负载平衡 (GSLB)

GSLB 是一种高级负载平衡方法,用于在世界各地战略性放置的许多服务器之间分配网站流量。 它通常通过任播路由技术完成,其中反向代理根据客户端和服务器之间的最快传输时间选择服务器节点。

GSLB 不仅大大提高了站点的可靠性和安全性,还减少了延迟和加载时间,从而增强了用户体验。 您可以将 GSLB 与 Spoon Feeding 等其他网络优化技术结合使用,以进一步释放源服务器的计算资源。

尽管您可以在服务器上手动设置全局服务器负载平衡,但通常由 Cloudflare 和 KeyCDN(也为 Kinsta CDN 提供支持)等专用 CDN 负责。 Kinsta 通过由 Google Cloud Platform 提供支持的负载均衡器为所有托管的网站提供服务。

增强的安全性

反向代理可以掩盖原始服务器的 IP 地址和其他特征。 因此,您网站的源服务器可以更好地保持其匿名性,从而显着提高其安全性。

由于反向代理将在到达主服务器之前接收所有流量,因此任何攻击者或黑客都会发现很难将您的网站作为 DDoS 攻击等安全威胁的目标。

您可以使用严格的防火墙来加强反向代理的安全性,以抵御常见的网络攻击。 如果没有安装反向代理,就很难删除恶意软件或开始删除。

像 HAProxy 这样的反向代理可以将基本的 HTTP 访问身份验证添加到没有启用它的 Web 服务器。 您还可以使用反向代理为各种类型的请求添加集中式身份验证。

强大的缓存

您可以通过缓存静态和动态内容来使用反向代理来实现 Web 加速。 这可以减少源服务器上的负载,从而使网站更快。

例如,如果您的源服务器在美国,并且来自欧洲的用户访问您的网站,那么您可以从欧洲的反向代理服务器提供您网站的缓存版本。 由于反向代理比原始服务器更接近用户,因此网站加载时间会更短,从而使其表现出色。

Varnish 和 Nginx FastCGI 是用于缓存 Web 内容的反向代理的突出示例。 如果您的网站由 Kinsta 托管,则您不必担心缓存,因为 Kinsta 会为您处理所有缓存工作。

卓越的压缩

服务器响应会占用大量带宽。 在将它们发送到客户端之前压缩服务器响应(例如使用 gzip)可以减少所需的带宽量,从而加快网络上的服务器响应。

反向代理非常适合压缩服务器响应,因为它位于源服务器和客户端之间。

优化的 SSL 加密

为每个客户端加密和解密 SSL/TLS 请求对于源服务器来说可能是非常繁重的。 反向代理可以承担此任务以释放源服务器的资源用于其他重要任务,例如提供内容。

卸载 SSL/TSL 加密和解密的另一个优点是减少地理上远离源服务器的客户端的延迟。

您还可以选择具有专用 SSL/TLS 加速硬件的反向代理来进一步优化此任务。 这种反向代理称为 SSL/TLS 终止代理。 Varnish 等一些服务器不支持 SSL/TSL 协议,因此 SSL/TSL 终止反向代理可以帮助保护通过它们的流量。

更好的 A/B 测试

大多数 A/B 测试工具都要求您使用外部 JavaScript 库来加载它们的功能。 但是,加载第三方脚本会减慢您的页面加载时间,并给用户带来不稳定的体验。

相反,您可以使用反向代理在服务器级别本身创建两个单独的流。 例如,您可以使用 Nginx 的split_clientssticky route方法来控制流量重定向。

您可以参考 Nginx 和 freeCodeCamp 的教程,了解更多关于使用反向代理执行 A/B 测试的信息。

监控和记录流量

反向代理捕获通过它的任何请求。 因此,您可以将它们用作监控和记录流量的中心枢纽。 即使您使用多个 Web 服务器来托管您网站的所有组件,使用反向代理也可以更轻松地监控您网站的所有传入和传出数据。

最受欢迎的反向代理

根据 W3Techs,几乎 83%的网站不使用他们监控的反向代理服务。

网站使用的反向代理统计
网站使用的反向代理统计(来源:W3Techs.com)

在使用反向代理(如上所列)的17%网站中,您会注意到其中大多数是 CDN。 这是因为大多数反向代理默认隐藏它们的存在以作为安全预防措施。 因此,您不能依赖像 W3Techs 这样的网站监控服务来查找哪些反向代理是最受欢迎的。

根据我们的研究和经验,当今最流行的反向代理是:

Nginx

Nginx 是一个开源的 Web 服务器,也可以作为反向代理。 除了用于托管网站外,它还是使用最广泛的反向代理和负载平衡解决方案之一。 根据 Netcraft 的数据,2019 年 12 月有超过4.79 亿台网络服务器在使用 Nginx,使其成为网络服务器市场份额的领导者。

根据 Netcraft,所有站点的 Web 服务器市场份额
所有站点的 Web 服务器市场份额(来源:Netcraft)

Nginx 提供了上面讨论的所有反向代理优势,以及更多。 它提高了 Web 性能、安全性、可靠性和可扩展性。 你可以使用它的配置文件来配置 Nginx,它也是可热重载的。 在 Kinsta,Nginx 反向代理是您可以使用的几个高级插件之一。

但您也可以使用商业产品 Nginx Plus 来访问基于 API 的配置选项和其他适用于大型企业网站的功能。

Kinsta 使用 Nginx 为其所有网站提供支持。 它在其参与的每个类别中都在 Review Signal 的顶级网络托管状态中排名。使用 Nginx 的其他一些主要公司是 MaxCDN、Cloudflare 和 Netflix。

将 Nginx 设置为基本的反向代理很简单。 Nginx 还为您提供各种指令来根据您的要求自定义服务器的反向代理。 我们将在后面的部分讨论如何做到这一点。 如果您是 Kinsta 客户,您还将在同一部分了解如何对使用 Kinsta 托管的网站使用反向代理。

Varnish 是一个带有内置缓存引擎的开源 HTTP 反向代理。 它主要设计用于提供动态内容的高流量网站。 您还可以将 Varnish 用作负载平衡器、Web 应用防火墙 (WAF) 以及边缘身份验证和授权服务器。

它适用于所有现代版本的 Linux 和 FreeBSD,主要用作 Nginx 或 Apache Web 服务器的前端。 Varnish 强大且高度灵活的 Varnish 配置语言 (VCL) 允许您定义各种功能,例如处理 HTTP 请求、缓存以及连接到一个或多个 Web 服务器。

出于这个原因,许多 CDN 使用 Varnish 作为快速交付内容的主要基础。

Varnish 还支持 Edge Side Includes (ESI),这是一种可以帮助您在其他网页中重用一个网页的部分的语言。 如果您的网站在不同页面中使用大量重复内容,ESI 可以通过缓存常用部分来帮助您加快网站的页面加载时间。

您可以使用 Varnish 的各种模块 (VMOD) 来扩展它。 前往 Varnish 的官方教程,了解如何将 Varnish 设置为 WordPress 的反向代理。

阿帕奇交通服务器

Apache Traffic Server 是一个开源缓存代理服务器。 它因其快速、可扩展的特性而广受欢迎。 它是雅虎开发的商业产品! 很久以前,但他们将其开源并将其捐赠给 Apache 基金会进行维护。

Comcast、Akamai、LinkedIn、Yahoo 和 Apple 等几个主要的内容网络和 CDN 都使用 Apache Traffic Server 来支持他们的技术。

您还可以使用 Apache HTTP Server ( Apache httpd ),一个 HTTP 服务器守护程序,在您的 Web 服务器上设置反向代理。 除了充当基本的 Web 服务器外,它还可以帮助您为用户提供静态和动态内容。 您将在本文后面学习如何将 Apache 设置为反向代理。

HAProxy

HAProxy 是一个开源的反向代理和负载均衡器。 它旨在与大多数现有 Web 服务器架构集成,包括 Linux 发行版和云平台。 与 Nginx 类似,HAProxy 使用事件驱动的 I/O 模型,并支持跨多个工作进程拆分请求。

对于 HTTP 请求,HAProxy 即使在高负载下也表现得非常好。 互联网上一些流量最高的网站,例如 Airbnb、Reddit、Instagram、Stack Overflow、Tumblr、GitHub 和 Imgur,都使用 HAProxy 来有效地交付他们的网站。

讨论如何实现 HAProxy 超出了本文的范围,但您可以参考他们的文档以了解其工作原理。

注意: Traefik 和 Envoy 是 HAProxy 的另外两个开源替代品。 它们既是高性能反向代理,又是具有许多高级功能的负载平衡器。

其他一些流行的反向代理是 AWS Elastic Load Balancer、GLBC、DigitalOcean Load Balancer 和 Google Cloud Load Balancer。 有关当今使用的顶级反向代理和负载均衡器的详尽列表,您可以查看 Stackshare.io。

反向代理:WordPress 网站的用例

为 WordPress 网站使用反向代理主要有三个用例,包括在 Kinsta 托管的网站。

加载主站点与代理站点
加载“主站点”与“代理站点”

我们将仅在此示例中使用 Nginx,因为它是当今用于 WordPress 网站的最流行的反向代理。 但同样的基本原则也适用于其他反向代理。

反向代理通常难以安装、配置和支持。 出于这个原因,Kinsta 为您需要帮助设置的每个反向代理提供每月 50 美元的附加订阅。 您可以联系 Kinsta 的支持团队了解更多详情。

1. 托管在同一台服务器上的主站点和代理站点

如果主站点和代理站点都托管在同一台服务器上,则主站点可以在 WordPress 安装上运行,而单独的 WordPress 安装为代理站点提供动力。

由于您可以访问站点及其共享 Web 服务器,因此您可以为主站点设置反向代理规则,然后将代理站点配置为从反向代理加载。

如果您在 Kinsta 托管这两个站点,则可以联系 Kinsta 的支持团队并请求他们为您设置反向代理。 这是您需要遵循的程序:

  • 确保主站点和代理站点都托管在 Kinsta 上。 如果不是,那么您可以手动或通过提交迁移请求将两个站点迁移到 Kinsta 的环境。
  • 打开支持票并向 Kinsta 的支持团队提供域配置的清晰描述。 我大约需要一个工作日来设置反向代理。
  • Kinsta 将在主站点上设置相关的反向代理规则,并配置代理站点以通过反向代理加载。

以下是 Kinsta 用于通过反向代理加载子目录站点的标准 Nginx 反向代理指令:

 location ^~ /subfolder/ { proxy_pass http://subfolder.domain.com; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; }

在上面的代码中,您需要将/subfolder/占位符替换为实际的子目录名称(例如/blog//shop/ )。 此外, http://subfolder.domain.com //subfolder.domain.com 子域应与用于将反向代理指向代理站点的 URL 匹配。

location指令包括插入符号和波浪号 ( ^~ ),告诉 Nginx 如果找到定义的字符串,它应该停止搜索进一步的匹配项并使用此处列出的指令。 在其文档中了解有关 Nginx 反向代理指令的更多信息。
接下来,您需要配置代理站点以通过反向代理加载。 以下是 Kinsta 配置代理站点所遵循的标准步骤:

  • 在加载代理站点的路径上创建一个子目录。 所有代理网站的文件都移动到此子目录。
  • 更新 Web 服务器的配置文件以将新子目录定义为代理站点的根目录。 此外,您需要添加重写规则以从每个传入请求的请求 URI 中删除子目录。
  • 更新代理站点数据库中的所有 URL 以匹配实时站点 URL(例如example.com/blog )。
  • 使用$_SERVER['HTTP_HOST']定义编辑代理站点的wp-config.php文件,将其指向主站点的 URL。
  • 如果您使用的是 SSL 证书,那么您需要在wp-config.php文件中定义严格的规则以避免重定向循环。

注意:代理站点不能创建与代理站点加载所在的同一子目录重复的 URL。 例如,位于example.com/blog/blog的代理站点无法在example.com/blog创建页面或目录。

2. 仅托管在您的服务器上的代理站点

如果您只能访问代理站点及其 Web 服务器,那么您需要联系主站点的服务器管理员并要求他们为您设置反向代理规则。

需要为您的网站提供快速、安全且对开发人员友好的托管服务? Kinsta 在构建时考虑了 WordPress 开发人员,并提供了大量工具和强大的仪表板。 查看我们的计划

为此,您必须遵循上述相同的步骤,但在这种情况下,您必须在两个不同的服务器上配置规则。

要使用 Kinsta 托管您的代理站点,请向该站点添加一个指向反向代理的域。 通常,子域适合此目的(例如blog.example.com )通过子目录链接(例如example.com/blog )加载代理站点。

在 Kinsta 上设置代理站点后,您可以联系 Kinsta 支持团队以配置代理站点以通过反向代理加载。 此时,我们的支持团队将需要您服务器的真实 IP,以便以正确计算访问次数的方式完成设置过程。 如果由于某些提供商(例如 AWS CloudFront)的动态 IP 限制而无法提供静态 IP,您的计划将改为转换为基于带宽的类似计划。

最后,在您的服务器上设置反向代理超出了 Kinsta 支持的范围,因为只有服务器管理员可以处理它。

3. 仅托管在您的服务器上的主站点

如果您只能访问主站点及其 Web 服务器,则应设置反向代理并配置其规则以从外部主机加载代理站点。 安装和配置代理站点以通过反向代理加载是辅助服务器管理员的责任。

将您的主站点托管在 Kinsta 将授予您访问 Kinsta 支持团队的权限。 您可以向他们提出支持请求,以添加本文前面列出的标准反向代理规则。 如果需要,您还可以将任何其他自定义添加到这些规则中。

在这种情况下,您完全负责配置代理站点以通过反向代理正确加载它。

如何将 Nginx 设置为反向代理

如果 Kinsta 不托管您的网站并且您管理您的服务器,那么您必须自己设置反向代理并将其配置为指向代理站点。

根据您的 Web 服务器的操作系统,您可以以不同的方式安装 Nginx。 对于 Linux 发行版,您可以根据您的 Linux 发行版的版本使用各种 Nginx 包。

在下面的示例中,我们将主站点安装在example.com域名,而代理 WordPress 站点安装在blog.domain.com子域。 它们都由运行在 Ubuntu 18.04 上的 Web 服务器上的 Apache 提供支持。 我们将在主服务器上安装和配置 Nginx 作为反向代理。

首先,通过 SSH 访问服务器的终端。 然后使用apt-get命令更新您的发行版的软件包列表并在您的 Web 服务器上安装 Nginx。

 sudo apt update sudo apt install nginx

接下来,您需要将 Nginx 配置为代理 Apache 上托管的域的请求。 为此,请创建一个新的虚拟主机文件。 在这里,我使用nano编辑器添加代码,但您可以使用您选择的任何代码编辑器。

 sudo nano /etc/nginx/sites-available/example.com.conf

然后通过添加以下server {...}location块来设置 Nginx 指令以将请求转发到 Apache:

 server { listen 80; server_name example.com www.example.com; index index.php; root /var/www/example.com/public # fallback for index.php location / { try_files $uri $uri/ /index.php?$query_string; }location /blog { proxy_pass http://blog.domain.com;proxy_http_version 1.1; proxy_cache_bypass $http_upgrade; # Proxy headers proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Port $server_port; # Proxy timeouts proxy_connect_timeout 60s; proxy_send_timeout 60s; proxy_read_timeout 60s; }

在上面的代码中,我定义了一个由 Apache 服务器提供的子目录example.com/blog链接。 确保在proxy_pass指令中使用代理网站的公共 IP 地址(或 URL)。 就我而言,我的代理网站托管在blog.domain.com子域上。

注意:在进行任何更改之前,请确保代理网站已安装并准备好提供服务。

您可以在 Nginx 的详细指令索引中了解有关此处使用的所有反向代理指令的更多信息。

保存虚拟主机文件。 然后通过在/etc/nginx/sites-available/etc/nginx/sites-enabled目录中为名为example.com.conf的文件创建符号链接来激活新的虚拟主机。

 sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/example.com.conf

之后,测试 Nginx 是否有任何配置错误。

 sudo nginx -t

如果没有错误,请重新加载 Nginx 以强制执行更改。

 sudo systemctl reload nginx

您现在已经成功地将 Nginx 设置为反向代理。 为了确认这一点,您可以使用 phpinfo() 函数来检查您访问代理站点时加载的 PHP 变量。

SERVER_SOFTWAREDOCUMENT_ROOT PHP 变量下,您将看到 Apache 在后端为该域提供服务。 但是HTTP_X_REAL_IPHTTP_X_FORWARDED_FOR PHP 变量确认 Nginx 被用作反向代理来转发请求。

您可以使用 fastcgi_cache 和 ngx_cache_purge 模块加快通过 Nginx 为 WordPress 站点提供服务的速度。 第一个模块将缓存您的站点,而第二个模块将根据特定事件(例如发布或编辑 WordPress 帖子/页面)自动清除缓存。

您可以使用 Nginx 缓存控制器 WordPress 插件直接从您的 WordPress 管理仪表板控制 Nginx 的代理服务器缓存。 如果您使用的是 WordPress 多站点安装,那么您可以使用 Nginx Helper 插件来执行相同的操作。

查看 Nginx 的主要文档和 Nginx WordPress 设置指南,详细了解如何使用 Nginx 和 WordPress。

如何将 Apache 设置为反向代理

在开始之前,请确保您有两个网站在example.comblog.domain.com上运行。 第一个网站可能是也可能不是 WordPress 网站,但第二个网站应该是 WordPress 网站,因为它主要用于加载位于example.com/blog子目录链接的根域的博客。

通过 SSH 打开服务器的终端并启用 Apache 的代理模块,开始配置 Apache。

 sudo a2enmod proxy proxy_http ssl

运行上述命令很可能会重新启动 Apache 以重新加载新定义的指令。

接下来,编辑主服务器的虚拟主机文件以创建反向代理。 这是您需要添加的代码:

 <VirtualHost *> DocumentRoot /var/www/app/public SSLProxyEngine On ProxyRequests off ProxyPass /blog http://blog.domain.com ProxyPassReverse /blog http://blog.domain.com </VirtualHost>

ProxyPass 指令将为指定的路径创建一个反向代理,而 ProxyPassReverse 指令将拦截通过该反向代理发送的 HTTP 响应标头并重写它们以匹配 Apache 服务器。

保存文件后,您需要通过在要求您停止编辑的行之前添加以下代码来编辑wp-config.php文件。

 # ProxyPass Settings # overrides the variables below to ensure that any # request to /blog/* subdirectory is taken care of properly $_SERVER['REQUEST_URI'] = '/blog' . $_SERVER['REQUEST_URI']; $_SERVER['SCRIPT_NAME'] = '/blog' . $_SERVER['SCRIPT_NAME']; $_SERVER['PHP_SELF'] = '/blog' . $_SERVER['PHP_SELF'];

最后,您需要更新 WordPress 站点的数据库以添加/blog子目录链接的配置值。 您可以通过运行以下 SQL 查询来做到这一点:

 UPDATE wp_options SET option_value = 'https://www.example.com/blog' WHERE option_name IN( 'siteurl', 'home' );

您现在应该能够访问https://www.example.com/blog URL 并在http://blog.domain.com子域加载您的 WordPress 站点,而无需更改其 URL。 您可以像往常一样继续使用 WordPress 来浏览、编写、编辑和管理您的网站。

反向代理的限制

  • 反向代理会带来重大的安全风险,因为它可以读取和更改通过它的所有流量。 如果您通过反向代理传递 HTTPS 流量,那么它需要对传递的数据进行解密和重新加密。 这意味着它必须拥有 SSL/TLS 证书的私钥。 因此,如果任何恶意方可以破坏您的反向代理,他们可以记录密码并将恶意软件注入您的网站。
  • 如果您或您的用户无法直接访问您的主服务器,那么使用反向代理可能会导致单点故障。 例如,如果您使用反向代理作为前端来服务多个域,那么它的中断可能会导致所有域同时脱机。
  • 如果您依赖第三方反向代理(例如 Cloudflare),那么您就是在将您网站的敏感信息交给他们。 虽然他们是值得信赖的,但您无法预测它可能会导致什么。
  • 在通过反向代理加载的网站上恢复备份或推送临时站点可能会导致代理站点停止正确加载。

在 CDN 和反向代理之间进行选择

CDN 是一种高级形式的反向代理,大部分配置和维护由第三方负责。 它们可以为您的 WordPress 网站提供惊人的性能优势,而您只需付出很小的努力。

CDN 不仅可以缓存内容并将其快速提供给用户,还可以减少源服务器上的负载、降低带宽成本、提供额外的安全层、提高网站的 SEO 并帮助您更好地扩展网站。

您会注意到 CDN 提供的大部分优势与反向代理提供的优势相同。 那么,您应该选择 CDN 而不是反向代理,反之亦然?

没有理由你必须只接受一个。 如果您已经安装了反向代理,您仍然会看到使用 CDN 的速度和性能提升。 它们的缓存层都很好,如果您有任何独特的请求处理需求(例如动态内容、电子商务),那么您可以使用 CDN 或反向代理传递的一些自定义标头轻松配置它。

想了解更多关于反向代理服务器的信息吗? 本文涵盖...它们的工作原理、主要优点以及如何使用它们来加速和保护您的 WordPress 网站。 点击推文

概括

WordPress 非常灵活。 您可以将其用作博客、电子商务网站,甚至是学习管理系统。 在大多数情况下,您可以自定义 WordPress 以满足您的独特需求。

但是,有时您可能必须使用单独的域或辅助服务器来托管其他站点。 如前所述,这可能是因为大型企业网站使用了不同的技术堆栈,或者为预先存在的非 WordPress 网站启动了 WordPress 博客。

反向代理可以在这两种情况下提供帮助,帮助您充分利用 WordPress,而无需放弃主网站并重新开始。