我正在尝试了解如何将网站名称的 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:
- 指令
listen address[:port]
将 绑定server{}
到给定的 IP 地址和端口。(虽然address
也可能是主机名,但它被解析为 IP 地址,因为主机名实际上并不存在于传输层或网络层。) - 这
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) 重要,因为它不会使您的服务器受到任何攻击。