Nginx server_name 指令如何与 CNAME 记录一起使用

Nginx server_name 指令如何与 CNAME 记录一起使用

设想

nginx我有一个由Listen at domain提供服务的网站myabc.domain.com

配置nginx是:

server {
  listen                      443 ssl;
  server_name                 myabc.domain.com`;
  root                        /home/ubuntu/portal;



  location / {

    # other directives
}

然后我在 DNS 服务器中添加一条 A 记录:

myabc.domain.com -> 123.123.123.123

它运行良好。

然后,我将 CNAME 记录添加到 DNS 服务器

myabc2.domain.com -> myabc.domain.com

我尝试使用 myabc2.domain.com 从浏览器访问网页,它有效!?

问题

我希望server_name 只允许访问标头nginx为 的站点。hostmyabc.domain.com

浏览器自动将标题host设置为我输入的标题。(我假设)

那么为什么不nginx拒绝访问此请求呢?

答案1

再次出现,Assumption从来都不是一件好事。Reading document是要走的路。

感谢@muru 为我指出了这一点。

答案是:

server_name我的问题描述了找不到匹配的服务器时的特定情况。在这种情况下,nginx会将请求路由到侦听该端口的第一个指定服务器 - 这是我设置中的 myabc.domain.com 服务器。

参考:Nginx 的文档

相关内容