来自不同服务器的父域上的 Nginx 反向代理路径

来自不同服务器的父域上的 Nginx 反向代理路径

我目前有托管在 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/

相关内容