无需我进行任何配置,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
。