Nginx 无需配置即可自动处理 www

Nginx 无需配置即可自动处理 www

无需我进行任何配置,nginx 就会为 www. 以及我在 中设置的域名提供网站服务server_name。我不知道这是怎么发生的,但我想禁用此功能。

意思是:我已经为 配置了一个服务器subdomain.example.com,它运行良好,但是www.subdomain.example.com也能工作!

这是我的 nginx 配置:

worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;
    include /etc/nginx/conf.d/*.conf;
}

然后是来自的示例文件/etc/nginx/conf.d/

server {
    listen 80;
    server_name subdomain.example.com;

    location / {
        proxy_pass http://656.655.665.655:3277;

    }

}

我已经检查过,其他配置中都没有通配符。

当我添加:

server {
  server_name www.subdomain.example.com;
  return 301 $scheme://subdomain.example.com$request_uri;
}

这有效,并且 www. 被重定向,但我不喜欢该解决方案,出于各种原因,我只想完全禁用 www.。

有任何想法吗?

答案1

Stack Overflow 答案 建议使用此代码删除www任何域之前的内容:

if ($host ~* ^www\.(.*)$) {
    rewrite / $scheme://$1 permanent;
}

注意 如果是邪恶的,但据说可以与 合作rewrite

相关内容