2016-03-10 3 views
0

Я хочу перенаправить evry-трафик домена на одну цель: https://example.com Мы хотим изменить http на https и www на unwww.nginx переписать правила только для SSL

Nginx 1.8.1 является сервером

Это ВХост:

server { 
listen xxx.xxx.xxx.xxx:80; 
listen xxx.xxx.xxx.xxx:443 ssl; 

ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
ssl_certificate /www/clients/client1/web2/ssl/example.com.crt; 
ssl_certificate_key /www/clients/client1/web2/ssl/example.com.key; 

server_name example.com www.example.com; 

root /var/www/example.com/web; 
#This is a rewrite from www.example.com -> example.com 
if ($http_host = "www.example.com") { 
rewrite^$scheme://example.com$request_uri? permanent; 
} 

...... 
...... 
}       

Проблема, что у нас есть, что каждый переадресовывает и переписать правила мы проверили, работал хорошо для этого трех случаев :

https://example.com -->  is right target  works 
http://www.example.com -->  https://example.com works 
http://example.com  -->  https://example.com works 

но

https://**www**.example.com ---> https://example.com don't works 

В браузерах мы видим https://www.example.com вместо целевого SSL домен https://example.com

В этом случае нашего SL Cert показан «ненадежный» - сообщение

configiguration в виртуальном хосте предустановлен на ISPConfig.

Есть ли у кого-то одинаковые переживания? И, может быть, решение.

ответ

0

Ваш сертификат скорее всего выдается только на example.com и недействителен для www.example.com. Перенаправления, подобные тому, который у вас есть в вашей конфигурации NGINX, происходят только после установления связи TLS/HTTPS, о чем жалуется ваш браузер.

Чтобы получить сертификат, действительный как для example.com, так и для www.example.com, необходимо обратиться к вашему издателю сертификата. Большинство эмитентов должны были сделать это с самого начала и не взимать плату.

0

Вот что я сделал с одним моим доменом.

server { 
    listen 80 default_server; 
    listen [::]:80 default_server ipv6only=on; 
    return 301 https://$host$request_uri$is_args$args; 
    root /var/www/public_html; 
    index index.php index.html index.htm; 

    server_name domain.com www.domain.com; 
    add_header Strict-Transport-Security "max-age=31536000"; 


    location/{ 
     try_files $uri $uri/ /index.php?$args;  
    } 

    location ~ \.php$ { 
      try_files $uri =404; 
      fastcgi_pass unix:/var/run/php5-fpm.sock; 
      fastcgi_index index.php; 
      include fastcgi_params; 
     } 

    location ~* \.(jpg|jpeg|png|gif|ico|css|js|svg)$ { 
      expires 2d; 
    } 
} 

server { 
    listen 443; 
    add_header Strict-Transport-Security "max-age=31536000"; 

    root /var/www/public_html; 
    index index.php index.html index.htm; 

    server_name domain.com www.domain.com; 
    ssl on; 
    ssl_certificate /etc/ssl/ssl-bundle.crt; 
    ssl_certificate_key /etc/ssl/myserver.key; 
    ssl_dhparam /etc/ssl/dhparams.pem; 
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
    #Disables all weak ciphers 
    ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4"; 

    ssl_prefer_server_ciphers on; 
    client_max_body_size 20M; 

    location/{ 
     try_files $uri $uri/ /index.php?$args;  
    } 

    location ~ \.php$ { 
      try_files $uri =404; 
      fastcgi_pass unix:/var/run/php5-fpm.sock; 
      fastcgi_index index.php; 
      include fastcgi_params; 
     } 

    location ~* \.(jpg|jpeg|png|gif|ico|css|js|svg)$ { 
      expires 30d; 
     } 
} 

Кстати, это настройки сделать мой домен SSL как А + в ssltestlab