【问题标题】:Can't redirect https://www.example.com to https://example.com无法将 https://www.example.com 重定向到 https://example.com
【发布时间】:2018-08-08 23:41:27
【问题描述】:

我在 Ubuntu 上使用 Nginx,能够将 www.example.com 重定向到 https://example.com,但不能从 SSL 重定向到带有 www 子域的 SSL。

这是我的/etc/nginx/sites-enabled/myapp.conf

# redirect non https traffic for the correct domains
server {
    if ($host = example.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    listen 80 default_server;
    listen [::]:80 default_server;

    server_name www.example.com;
    return 301 https://example.com$request_uri;
    return 404; # managed by Certbot

}

server {
    listen [::]:443 ssl ipv6only=on;
    listen 443 ssl;
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

    # server for these domains
    server_name example.com;

    # first try to serve the erb version.
    index index.html;

    # Tell Nginx and Passenger where your app's 'public' directory is
    root /var/www/myapp/code/public;

    # Turn on Passenger
    passenger_enabled on;
    passenger_ruby /usr/local/rvm/gems/ruby-2.5.1/wrappers/ruby;
}

有没有办法将所有 www 子域的流量重定向到根域,即使在 https:// 之后输入 www URL?

谢谢,感谢您的帮助。

【问题讨论】:

    标签: ubuntu redirect nginx passenger lets-encrypt


    【解决方案1】:

    是的,添加以下服务器块:

    # remove 'www'
    server {
        listen 80;
        listen 443 ssl;
        server_name www.domain.com;
        return 301 https://example.com$request_uri;
    }
    

    这是来自nginx docs

    【讨论】:

      猜你喜欢
      • 2015-09-25
      • 1970-01-01
      • 2020-09-24
      • 2011-07-06
      • 2011-08-12
      • 1970-01-01
      • 2016-11-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多