【问题标题】:nginx redirect https://domain.com to https://www.domain.com [closed]nginx 将 https://domain.com 重定向到 https://www.domain.com [关闭]
【发布时间】:2016-05-27 19:31:50
【问题描述】:

我在 nginx 服务器上设置了一个电子商务域,它应该满足以下条件:

如下图所示,based on this SO answer 追求相反的情况,即强制所有流量到https://domain.com 没有www,我得到以下结果:

如何将https://domain.com 重定向到https://www.domain.com?检查我当前的配置:

#
# Rewrite any http requests for DOMAIN.com to www.DOMAIN.com using SSL
#
server {
    listen 80;
    server_name DOMAIN.com;
    return 301 https://www.DOMAIN.com$request_uri;
}

#
# Rewrite any http requests for www.DOMAIN.com to https
#
server {
    listen 80;
    server_name www.DOMAIN.com;
    return 301 https://www.DOMAIN.com$request_uri;
}

#
# The DOMAIN.com website
#
server {
    listen 443 default_server;
    server_name DOMAIN.com;
    root /var/www;
    index index.html index.htm index.php;

    ssl on;
    ssl_certificate /etc/nginx/ssl/www_DOMAIN_com.pem;
    ssl_certificate_key /etc/nginx/ssl/www_DOMAIN_com.key;
    ssl_session_timeout 5m;
    if ($host = DOMAIN.com) {
        rewrite ^(.*) https://www.DOMAIN.com:443$request_uri? permanent;
    }

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4";
    ssl_dhparam /etc/nginx/ssl/dhparams.pem;
    ssl_session_cache shared:SSL:10m;

    location / {
        try_files $uri $uri/ @handler;
    }

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
    }

    location ~ /\.ht {
        deny all;
    }

    location @handler {
            rewrite / /index.php;
    }

    location ~ .php/ {
            rewrite ^(.*.php)/ $1 last;
    }
}

【问题讨论】:

    标签: redirect nginx https


    【解决方案1】:

    443 DOMAIN.com 块中缺少 ssl 指令。您当然必须拥有 DOMAIN.com 的有效证书

    【讨论】:

    • 重点是,我们只有 www.DOMAIN.com 的证书,这就是我们希望从安全的 DOMAIN.com 强制重定向到 www.DOMAIN.com 的原因。我想知道这种重定向是否可以在网络服务器级别进行,或者我们是否需要查看更高的内容,例如在 DNS 配置中。
    • 您无法在没有证书的情况下重定向服务器上的 https。 DNS没有帮助。您可以从letsencrypt.org/getting-started获得免费证书
    • 证明证书适用于 DOMAIN.com 和 www.DOMAIN.com,问题出在 DNS 配置中(@ 记录与预期的重定向冲突)。如果这有助于任何偶然发现此问题的人,我将使用有效的 nginx conf 更新我的问题。感谢您的帮助。
    【解决方案2】:

    (代表 OP 发布)。

    上述配置有效,问题实际上出在 DNS 设置中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-20
      • 1970-01-01
      • 1970-01-01
      • 2012-08-22
      • 2013-02-16
      • 1970-01-01
      相关资源
      最近更新 更多