Настройка SSL в nginx
December 9th, 2009
В nginx настроить SSL для домена еще проще чем в Апаче. Для начала генерим закрытый ключ, запрос на сертификат и подписываем его как указано в статье настройка SSL на Apache
Теперь конфиг:
server {
listen 1.2.3.1:443;
keepalive_timeout 70;
server_name .domain.com;
ssl on;
ssl_protocols SSLv3 TLSv1;
ssl_ciphers AES128-SHA:AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4-MD5;
ssl_certificate /etc/nginx/vhosts/www.domain.crt;
ssl_certificate_key /etc/nginx/vhosts/www.domain.key;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 20m;
location ~* \.(JPG|jpg|jpeg|gif|png|ico|zip|doc|gz|rar|bz2|swf|avi|mpg|vmw|wmv|mpeg|mkv|js)$ {
root /usr/local/www/domain.com;
expires max;
}
location / {
proxy_pass http://127.0.0.1:80/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
listen 1.2.3.1:443;
keepalive_timeout 70;
server_name .domain.com;
ssl on;
ssl_protocols SSLv3 TLSv1;
ssl_ciphers AES128-SHA:AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4-MD5;
ssl_certificate /etc/nginx/vhosts/www.domain.crt;
ssl_certificate_key /etc/nginx/vhosts/www.domain.key;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 20m;
location ~* \.(JPG|jpg|jpeg|gif|png|ico|zip|doc|gz|rar|bz2|swf|avi|mpg|vmw|wmv|mpeg|mkv|js)$ {
root /usr/local/www/domain.com;
expires max;
}
location / {
proxy_pass http://127.0.0.1:80/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
Нюансы такие:
Файл с закрытым ключем придется делать без пароля. Если он у вас с паролем, то снять пароль можно так:
openssl rsa -in key.pem -out keyout.pem
Ну и если вы делаете нормальные подписанные авторитетными CA сертификаты уникальные для каждого домена, то не забыть вешать каждый домен на отдельный ип.
На апаче в такой конфигурации вообще ничего изменять не нужно и до апача доходит уже расшифрованный трафик.