如何配置nginx www和非www域

How to configure nginx www and non-www domains

我正在按照两个教程 (1 and 2) 在我的服务器上设置两个域,但经过多次尝试,我无法弄清楚如何让两个域都正常工作以及如何将 www 重定向到非 www。 目前,使用相同的服务器块文件和 DNS 记录,两者都以不同的方式工作,我认为它可能是某种缓存,但我不知道为什么会这样。 服务器块文件是:

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

       server_name domain.com;

       root /var/www/domain.com/html;
       index index.html;

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

并且两者具有相同的 DNS 记录:

A Record | @ | VPS IP
A Record | www | VPS IP

问题是域无法正常工作。

我重新启动了 nginx 和 VPS,但两者仍然以不同的方式工作(正如我所描述的)。

终于找到方法了

这是一个服务器块配置,我已经证明了但与其他 DNS(过去)一起使用,所以现在它使用以下组合:

DNS记录(同上):

A Record | @ | VPS IP
A Record | www | VPS IP

服务器块配置:

server {
        listen 80;
        listen [::]:80;
        server_name www.domain.com;
        return 301 $scheme://domain.com$request_uri;
}
server {
        listen 80;
        listen [::]:80;
        server_name domain.com;

        root /var/www/domain.com/html;
        index index.html;
}

感谢@Timilo 的建议让我再次尝试。