2014-09-19 2 views
0

Недавно я купил сертификат SSL, который я хочу попробовать. Я также создал сервер VPS в первый раз, и после многих попыток и сердитого управления мне удалось установить LEMP и NGINX на Ubuntu 14.04, а также установить SSL-сертификат. Мой сайт wknet.se.NGINX http://example.com https://www.example.com rewrite, как?

Теперь я хочу переписать URL,:

---------------------------------------------------------------- 
|    From     |    To   | 
---------------------------------------------------------------- 
| http://wknet.se    | https://www.wknet.se | 
| http://wknet.se/index.php  | https://www.wknet.se | 
| http://www.wknet.se/index.php | https://www.wknet.se | 
| wknet.se      | https://www.wknet.se | 
| wknet.se/index.php    | https://www.wknet.se | 
| www.wknet.se/index.php   | https://www.wknet.se | 
| https://wknet.se    | https://www.wknet.se | 
| https://wknet.se/index.php  | https://www.wknet.se | 
---------------------------------------------------------------- 

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

---------------------------------------------------------------- 
|    From     |    To   | 
---------------------------------------------------------------- 
| https://wknet.se    | https://www.wknet.se | 
| https://wknet.se/index.php  | https://www.wknet.se | 
---------------------------------------------------------------- 

Теперь, я не знаю, как их исправить! У меня есть googled и googled, и я проверил несколько хороших правил перезаписи для NGINX, но пока не понял.

Это мой первый раз, когда я работаю над протоколом SSL, Rewrite и т. Д. На NGINX.

Теперь, это то, как мои настройки сервера похожи на wknet.se:

server { 
    listen 80 default_server; 
    listen [::]:80 default_server ipv6only=on; 

    add_header Strict-Transport-Security max-age=15768000; 
    return 301 https://www.wknet.se$request_uri; 
} 
server { 
    listen 443 ssl; 
    server_name www.wknet.se; 

    root /var/www/wknet.se/html; 
    index index.php index.html index.htm; 

    ssl_certificate /etc/nginx/ssl/SSL.CRT; 
    ssl_certificate_key /etc/nginx/ssl/KEY.KEY; 

    ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2; 
    ssl_ciphers ALL:!aNULL:!ADH:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM; 
    ssl_prefer_server_ciphers on; 

    error_page 404 /404.html; 
    error_page 500 502 503 504 /50x.html; 

    location/{ 
     try_files $uri $uri/ =404; 
    } 

    location = /50x.html { 
     root /usr/share/nginx/html; 
    } 

    location ~ \.php$ { 
     try_files $uri =404; 
     fastcgi_split_path_info ^(.+\.php)(/.+)$; 
     fastcgi_pass unix:/var/run/php5-fpm.sock; 
     fastcgi_index index.php; 
     include fastcgi_params; 
    } 
    location = /index { 
     rewrite ^/index\.(php)$ https://www.wknet.se/ permanent; 
    } 

    location ~ /\.ht { 
     deny all; 
    } 

    location = /favicon.ico { 
     log_not_found off; 
     access_log off; 
    } 

    location = /robots.txt { 
     allow all; 
     log_not_found off; 
     access_log off; 
    } 

    location ~ /\. { 
     deny all; 
     error_log off; 
     log_not_found off; 
    } 

    location ~* .(jpg|jpeg|png|gif|ico|css|js)$ { 
     log_not_found off; 
     expires 365d; 
    } 

    location ~* ^.+\.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|png|gif|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ { 
     access_log off; 
     log_not_found off; 
     expires max; 
     add_header Pragma public; 
     add_header Cache-Control "public, must-revalidate, proxy-revalidate"; 
    } 

    location ~* \.(7z|ai|class|css|csv|ejs|eps|flv|html?|jar|jpe?g|js|json|lzh|m4a|m4v|mov|mp3|pdf|pict|pls|ps|psd|swf|tiff?|txt|webp)$ { 
     access_log off; 
     log_not_found off; 
     expires max; 
     add_header Pragma public; 
     add_header Cache-Control "public, must-revalidate, proxy-revalidate"; 
    } 
} 

Если кто-то может помочь мне с этим я был бы очень счастлив! Кроме того, если у кого-то есть советы по настройкам моего сервера, чтобы внести некоторые улучшения, это поможет многого, потому что я не знаю, правильно ли я это сделал!

Спасибо!

ответ

0

Перенаправление от example.com к www.example.com вам просто нужно создать отдельный блок сервера и установить server_name соответственно. В вашей установке, вы могли бы сделать:

server { 
    listen 443 ssl; 
    server_name wknet.se; 

    ssl_certificate /etc/nginx/ssl/SSL.CRT; 
    ssl_certificate_key /etc/nginx/ssl/KEY.KEY; 

    # OBSOLETE: 
    # ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2; 
    # ssl_ciphers ALL:!aNULL:!ADH:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM; 

    # Use currently secure protocols 
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
    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:!CAMELLIA:!DES:!MD5:!PSK:!RC4'; 

    ssl_prefer_server_ciphers on; 

    return 301 https://www.wknet.se$request_uri; 
} 

выше будет перенаправлять все https://wknet.se/ ... запросов https://www.wknet.se/ ....

Для HTTPS вам необходимо включить ключей SSL-сертификата в пределах блока (или вы можете установить сертификат SSL. Заявления в вашем HTTP блока, если все серверы используют один и тот же набор).

Additonal Конфигурация

Если вы хотите перенаправить http://wknet.se/ ... в http://www.wknet.se/ ... - нормальные запросы HTTP ССЛЫ HTTPS запросов - добавить дополнительный блок сервера, который прослушивает порт 80 и перенаправляет на порт 443:

server { 
    listen 80; 
    server_name *.wknet.se wknet.se; 
    return 301 https://www.wknet.se$request_uri; 
} 

выше перенаправляет http://wknet.se/ ... и любые запросы на субдомены как http://www.wknet.se/ ... или http://static.wknet.se/ ... и т.д. до https://www.wknet.se/ ....

2015-03-28 Редакция Примечание

  • Обновлен пример кода использовать безопасные SSL протоколы. В исходном примере используется SSLv3, который устарел. Я заменил ssl_protocols и ssl_ciphers более безопасными настройками в соответствии с текущей практикой.
+0

Большое спасибо за то, что @kchan он отлично работал :) Он перенаправляет плавно. Я скопировал все и изменил его в соответствии со своими потребностями, и я скопировал его также на другой сайт, который у меня есть и на сервере. Но проблема в том, что он постоянно перенаправляется на defualt-сервер. Единственные ссылки, которые работают [https://www.webkreativ.hr] (https://www.webkreativ.hr) и [https://webkreativ.hr] (https://webkreativ.hr). Если вы наберете webkreativ.hr или [www.webkreativ.hr] (http://www.webkreativ.hr), вы будете перенаправлены на [https://www.wknet.se] (https: // www .wknet.se). Что я делаю не так? – damircalusic

+0

У вас должен быть блок сервера по умолчанию, который является «полным» для всех запросов. Обычно вы должны установить * server_name * на * _ *, и в этом блоке вы можете перенаправить все запросы на любой URL-адрес, который вы хотите. Я бы проверил ваши серверные конфигурации nginx, чтобы узнать, к чему перенаправляется серверный блок по умолчанию. См. Документацию nginx для примеров блочного блока «catch-all»: http://nginx.org/en/docs/http/server_names.html – kchan

+0

Здесь вы можете увидеть настройки -> [nginx.conf] (https://www.wknet.se/nginx/nginx.conf.txt). Здесь вы можете увидеть настройки -> [wknet.se] (https://www.wknet.se/nginx/wknet.se.txt). Здесь вы можете увидеть настройки -> [webkreativ.hr] (https://www.wknet.se/nginx/webkreativ.hr.txt). Я был бы очень рад, если бы вы могли помочь мне в этом. – damircalusic