在 Nginx Ubuntu 服务器上解析 DNS

在 Nginx Ubuntu 服务器上解析 DNS

我正在尝试了解如何将网站名称的 DNS 解析为命名的 IP 地址。这些网站在 reg123 上注册,但网站托管在另一台服务器上。在 Nginx 上哪里输入这些详细信息?在我的 Nginx 配置文件中的哪个位置输入正确的 DNS,以将网站链接到正确的 IP 地址?我按照这个教程操作,它似乎表明您的服务器设置如下:

server {
        listen 80;
        listen [::]:80;

        root /var/www/example.com/html;
        index index.html index.htm index.nginx-debian.html;

        server_name example.com www.example.com;

        location / {
                try_files $uri $uri/ =404;
        }
}

但是我的网站的 IP 地址是这样的:192.889.167.423

答案1

Nginx 只需回答 HTTP 请求,根本不需要了解 DNS:

  1. 指令listen address[:port]将 绑定server{}到给定的 IP 地址和端口。(虽然address也可能是主机名,但它被解析为 IP 地址,因为主机名实际上并不存在于传输层或网络层。)
  2. server_name,设置虚拟服务器的名称,用于server{}在所有server{}具有匹配的块中选择正确的listen。它使用 HTTPHost标头,即浏览器传递该信息(无论 DNS 如何)。

使用 HTTP Host(RFC 7230, 5.4) 功能不需要为所有域设置单独的 IP 地址,并且服务器名称指示(SNI,RFC 6066, 3) 为 HTTPS 启用相同功能。

有了,listen *:80; server_name example.com;您的 Nginx 将响应对其example.com拥有的每个 IP 地址的请求,但这实际上不会发生:a) 因为 DNS 指向另一个 IP 地址,也不会发生;b) 重要,因为它不会使您的服务器受到任何攻击。

相关内容