【问题标题】:How do i redirect WWW url to non www url in nginx?如何将 WWW url 重定向到 nginx 中的非 www url?
【发布时间】:2021-04-16 04:07:24
【问题描述】:

我的 nginx 配置有问题,我想将 www.yoursay.transport.nsw.gov.au 重定向到 https://yoursay.transport.nsw.gov.au

这是我的配置

server {
    listen 443 ssl;

    ssl_certificate /etc/letsencrypt/live/yoursay.transport.nsw.gov.au/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/yoursay.transport.nsw.gov.au/privkey.pem;

    # enable OCSP stapling to speed up first connect
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_trusted_certificate /etc/letsencrypt/live/yoursay.transport.nsw.gov.au/chain.pem;

    if ($host = www.$server_name) {
    rewrite ^(.*) https://$server_name$request_uri? permanent;
    }
    server_name yoursay.transport.nsw.gov.au;

    root /var/www/ehq;

    add_header X-XSS-Protection "1; mode=block";
    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-Content-Type-Options "nosniff";
    add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload";

    include snippets/common_blocks.inc;
}

server {
    listen 80;

    server_name yoursay.transport.nsw.gov.au;
    return 301 https://yoursay.transport.nsw.gov.au$request_uri;
}

但它仍然不起作用,它说 ERR_CONNECTION_CLOSED

请帮我解决这个问题。

【问题讨论】:

    标签: nginx proxy lets-encrypt nginx-reverse-proxy nginx-config


    【解决方案1】:

    替换这个:

        if ($host = www.$server_name) {
        rewrite ^(.*) https://$server_name$request_uri? permanent;
        }
        server_name yoursay.transport.nsw.gov.au;
    

    用这个:

        if ($host = www.yoursay.transport.nsw.gov.au) {
            return 301 https://yoursay.transport.nsw.gov.au$request_uri;
        }
        server_name yoursay.transport.nsw.gov.au www.yoursay.transport.nsw.gov.au;
    

    解释:

    当有人访问您的网站时,他们会发送 HTTP 请求标头。其中之一是Host,这是他们用来访问网站的地址。它可以是 IP 地址、www.example.comexample.comsomething.completely.irrelevantserver_name 选项定义此配置属于哪个 Host 标头。这就是为什么我在 server_name 中添加了www.yoursay.transport.nsw.gov.au,所以这个配置用于访问该地址的访问者。您可能还希望在您的 HTTP 服务器块(侦听端口 80)中重复此操作。

    【讨论】:

    • 它不起作用它说,nginx:/etc/nginx/sites-enabled/www.yoursay.transport.nsw.gov.au:37 nginx 中的 [emerg] 未知指令“重定向” : 配置文件 /etc/nginx/nginx_resty.conf 测试失败
    • @sambit Aw,对不起,不是redirectreturn。我会修复答案。
    • 很抱歉,但它现在不起作用我看到另一个错误 - 添加上述语句后 NET::ERR_CERT_COMMON_NAME_INVALID
    • 通过certbot强制续订方法获得证书后得到修复。 sudo certbot certonly --force-renewal --webroot -w /var/www -d www.yoursay.transport.nsw.gov.au
    • @sambit 很高兴为您提供帮助。我希望您确实多次指定-d,否则您只是将一个单名证书替换为另一个。
    猜你喜欢
    • 2011-06-24
    • 2019-03-09
    • 2011-11-05
    • 2013-12-20
    • 2015-08-03
    • 2013-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多