启用 Varnish 后,NGINX 上 301 将 www 重定向到非 www

启用 Varnish 后,NGINX 上 301 将 www 重定向到非 www

我真的希望有人能帮我解决这个问题。经过大量搜索,我还是找不到解决方案。

我在 NGINX 上运行我的网站并启用了 Varnish,但是,当我尝试将我的域名的 www 版本重定向到非 www 版本时,它不起作用,而且我尝试了很多种不同的方法。

这是我目前的配置文件:

server {
    server_name ~^(.+\.)(?<domain>.+\..+)$;
    rewrite ^ $scheme://domain.com permanent;
}

server {
    listen 8080;
    listen [::]:8080 ipv6only=on default_server;

...
..
.
}

当我尝试重新启动 NGINX 时,出现以下错误:

nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] still could not bind()

有谁知道发生什么事了吗?

答案1

您尚未为第一个“服务器”(带重定向)设置“监听”参数。

Nginx 默认监听 *:80(以超级用户身份运行时)或 *:8000(以普通用户身份运行时)。

Varnish 已绑定 80 端口。因此,您只需设置“listen 8080”;对于所有“服务器”,您必须阻止绑定到默认端口

答案2

为什么要重启 Nginx?它支持重新加载配置文件:

nginx -s reload

相关内容