我的域和子域指向同一个文件(用于测试目的)。我的域可以工作,但子域不能工作

问题描述 投票:0回答:1

我最近购买了一个域名。我已经使用该域设置了一个节点服务器。它正在返回预期结果。但我想将其转移到子域。我以与我的域相同的方式配置了 nginx 服务器块,但它仍然无法工作。我还设置了正确的 A 记录,并尝试使用 CNAME 记录,但这也不起作用。我正在使用 nginx 进行反向代理。

我已尝试更改 CNAME 记录以及子域的 A 记录,就像我的域一样,但它不起作用。

node.js nginx server dns ip
1个回答
0
投票

您似乎面临着让您的子域与 NGINX 作为 Node.js 应用程序的反向代理一起使用的问题。让我们逐步完成该过程,以确保一切设置正确。以下是一些需要检查的事项:

1. 检查您的 DNS 设置:

首先,仔细检查您的子域的 DNS 是否已正确设置。如果您将

app.example.com
指向您的服务器,请确保您拥有正确的 A 记录。这应该直接指向运行 NGINX 的服务器的 IP 地址。

  • 如果您使用A记录,请确保它指向您服务器的IP地址。
  • 如果您使用 CNAME 记录,它们应指向您的主域(例如,
    example.com
    )。

您可以使用

dig
nslookup
验证 DNS 解析:

dig app.example.com

这应该返回正确的 IP 地址。如果未显示,则 DNS 传播可能存在延迟,或者 DNS 配置中可能存在某些问题。

2. NGINX 配置:

接下来,检查您的 NGINX 配置。它应该看起来像这样:

server {
    listen 80;
    server_name app.example.com;  # Replace with your subdomain

    location / {
        proxy_pass http://127.0.0.1:3000;  # Address of your Node.js app
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

需要确认的几件事:

  • server_name
    指向您的子域(例如,
    app.example.com
    )。
  • proxy_pass
    指向 Node.js 应用程序运行的位置(例如,
    127.0.0.1:3000
    )。
  • 更新 NGINX 后,不要忘记重新加载它:
sudo nginx -t  # To test the configuration
sudo systemctl reload nginx  # To apply changes

3. 防火墙和网络:

确保防火墙允许流量通过端口 80 (HTTP) 和 443 (HTTPS)。如果您的防火墙设置受到限制,这可能至关重要。

您可以通过运行以下命令来检查 NGINX 状态:

sudo systemctl status nginx

这将告诉您 NGINX 是否运行顺利并侦听预期的端口。

4. Node.js 应用程序配置:

仔细检查您的 Node.js 应用程序是否正在侦听正确的接口。如果它设置为

localhost
127.0.0.1
,NGINX 可能无法访问它。您希望它侦听
0.0.0.0
,以便它可以接受来自任何地方的连接,包括您的 NGINX 反向代理。

在你的 Node.js 应用程序中,你应该有这样的东西:

app.listen(3000, '0.0.0.0', () => {
    console.log('Node.js app is running on port 3000');
});

5. 测试与调试:

一切设置完毕后,您可以通过运行

curl
请求来测试您的设置,以检查其是否正常工作:

curl http://app.example.com

如果您从 Node.js 应用程序中看到预期的结果,那么一切都很好!

如果仍然无法正常工作,请检查您的 NGINX 错误日志:

sudo tail -f /var/log/nginx/error.log

任何错误或错误配置都可能会显示在此处,并可以帮助您指明正确的方向。

6. 清除 DNS 缓存:

DNS 更改有时可能需要一些时间才能传播。如果您最近更新了 DNS,则更改可能需要几个小时甚至长达 48 小时才能完全传播。如果您一直在使用 DNS 缓存版本进行测试,请尝试在本地计算机上清除它或使用不同的网络进行测试。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.