我正在开发一个具有以下元素的应用程序:
- 子域名重定向到服务器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 应用静态文件,这里有一个很好的 教程。