2016-05-27 3 views
0

Я настраиваю домен электронной коммерции на сервере Nginx, который должен выполнить следующие условия:Nginx перенаправлять https://domain.com на https://www.domain.com

с конфигурацией, показанной ниже, 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; 
    } 
} 

ответ

2

Директивы ssl отсутствуют на блоке 443 DOMAIN.com. Вы должны, конечно, иметь действительный сертификат для DOMAIN.com

+0

Именно поэтому у нас есть сертификат только на www.DOMAIN.com, и именно по этой причине мы хотим, чтобы принудительная переадресация с безопасного DOMAIN.com на www.DOMAIN.com. Мне интересно, возможно ли такое перенаправление на уровне веб-сервера, или если нам нужно посмотреть выше, скажем, в конфигурации DNS. – kadm

+0

Вы не можете перенаправить https на сервер без сертификата. DNS не помогает. Вы можете получить бесплатный сертификат с https://letsencrypt.org/getting-started/ – Tom

+1

Оказывает, что сертификат работает на DOMAIN.com и www.DOMAIN.com, и проблема была в конфигурации DNS (запись @, конфликтующая с предполагаемое перенаправление). Я обновлю свой вопрос с помощью работающего nginx conf, если это поможет кому-то наткнуться на это. Спасибо за вашу помощь. – kadm

0

(Отправлено от имени ОП).

Приведенная выше конфигурация работает, проблема была фактически в настройках DNS.

Смежные вопросы