如何使用 Nginx 将连接从子域重定向到另一台服务器

如何使用 Nginx 将连接从子域重定向到另一台服务器

我正在开发一个具有以下元素的应用程序:

  • 子域名重定向到服务器A的80端口
  • 服务器 A 托管两个 docker 容器:一个用于 nginx 映射端口 80 到 80,另一个用于 react app 映射端口 3000 到 3000。

我想要做的事情很简单:我想使用 nginx 连接将子域重定向到端口 3000,从而显示 react 应用程序。

为此,我使用了这个文件,并将其放入 /etc/nginx/sites-enabled/ 中。目前,当我连接到 my_domain.com 时,我拥有 nginx 的默认页面,没有重定向到 ip_address:3000 。

server {
listen 80;

server_name my_subdomain www.my_subdomain.com;
location /{
proxy_set_header Host $http_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_pass http://ip_address:3000;
}


}

答案1

考虑到您正在连接到 www.my_subdomain.com 而不是通过 https 连接,您的代理看起来是正确的。您应该验证您的配置是否正在加载,我记得有些 nginx 服务器只加载 sites-enabled/*.conf,请检查 /etc/nginx/nginx.conf 中的以下行:

include /etc/nginx/sites-enabled/*.conf;

另外,React 应用程序仅包含一些静态文件,因此您可以让它们直接由 nginx 提供服务,而无需代理。

答案2

我把这个答案贴出来以防有人遇到和我一样的问题。正如接受的答案中所说,代理是正确的。问题的根本原因是子域名需要一些时间才能生效。

另外,如果你想直接从 Nginx 提供 React 应用静态文件,这里有一个很好的 教程

相关内容