我目前有托管在 AWS 上的 Web 应用程序的 Web 服务器,我计划为该 Web 应用程序启动一个博客,我计划从 DigitalOcean 服务器 (Nginx) 托管该博客,因为它易于维护并且可直接与 Ghost CMS 集成,我将使用 Ghost CMS 作为我的博客 CMS。我知道通过 DNS 记录可以轻松简单地将子域指向 DigitalOcean droplet 以从类似 的服务器为博客提供服务blog.example.com
,但我试图从父域 ( ) 中的子目录访问该博客www.example.com/blog
。
我是否可以通过调整 Nginx 服务器上的反向代理来实现此子目录访问? 是否有其他方法可以构建两台服务器之间的通信?
例子:
用户转到www.example.com
(AWS 服务器加载页面)
用户进入www.example.com/blog/new-post
(DigitalOcean 服务器加载页面)
答案1
这相当简单,您只需创建一个www.example.com
返回 DigitalOcean 服务器 IP 的 A 记录。然后,您将 /blog 站点托管在该服务器上运行的 NginX 上。然后,为第二个 AWS Web 服务器创建另一个 A 记录,例如 ´webhost1.example.com`(第二个 DNS 记录不是必需的,但它是执行此操作的可靠方法,并且如果您想要移动该服务器并且其 IP 发生变化,它会变得更加容易),然后您可以像这样配置 NginX:
server {
listen 80;
listen [::]:80;
server_name example.com;
location / {
proxy_pass http://webhost1.exmaple.com/;
}
location /blog/ {
[your normal location config here]
}
}
请注意,这未经测试,因此可能存在一些语法错误等。需要注意的行是proxy_pass
。这告诉 NginX 将请求代理传递到另一台服务器。您还可以使用它将流量传递到同一主机上其他端口上运行的服务等。
有关 NginX 反向代理的更多详细信息 https://www.linode.com/docs/web-servers/nginx/use-nginx-reverse-proxy/