Получаем сертификат Let's Encrypt на сайт Nginx в Linux Gentoo. Создаем виртуальные хосты в nginx.
Опубликовал: FIELD LINE, 28-04-2019, 13:38, Проекты, 1 268, 0
В данной статье рассказано как получить на ваш сайт SSL сертификат Let's Encrypt на web сервере Nginx в ОС Linux Gentoo.
Вопрос: Для чего нужен этот сертификат?
Ответ: Для поддержки сайтом протокола https://. Let's Encrypt - это бесплатное и надежное решение.
Ответ: Для поддержки сайтом протокола https://. Let's Encrypt - это бесплатное и надежное решение.
Установка:
1) Для начала синканем систему. Вводите в терминал emerge --sync
1.1) Получать сертификат будем благодаря certbot. Для этого установим его.
emerge app-crypt/certbot
Так как на нашем сервере nginx, для поддержки certbot'ом nginx'а, установите certbot-nginx
emerge app-crypt/certbot-nginx
Установка certbot для nginx в Linux Gentoo завершена. Далее переходим к выдаче сертификата на ваш желаемый домен.
Выдача сертификата на ваш сайт:
Обязательное условие! На nginx должны быть настроены виртуальные хосты под каждый сайт. Если у вас установлен на сервере Nginx и виртуальные хосты не настроены, то в пункте 3 все подробно расписано.
2) Вводите в терминал следующую команду (Где yoursite.com вводите имя вашего домена).
certbot --nginx -d yoursite.com -d www.yoursite.com
2.1) Важно!!! После проделанного в шаге выше запустится certbot. Действуйте по пунктам, отвечайте на вопросы по вашему желанию. В одном из пунктов будет спрашивать, автоматически отредактировать ваш виртуальный хост для поддержки https домена на nginx, соглашайтесь. Виртуальный хост будет настроен автоматически под поддержку https. Нововведения в виртуальный хост вашего сайта можете проверить в конфигах nginx - /etc/nginx/conf.d.
2.2) Если виртуальные хосты изначально настроены у вас должным образом, то ваш сайт имеет поддержку https. На этом получение сертификата Let's Encrypt для Nginx в Linux Gentoo завершено. Папка с полученными сертификатами и прочими файлами расположена в /etc/letsencrypt
3) Создание виртуальных хостов nginx в gentoo.
Важно!!! - данный пункт является нужным для тех, у кого изначально не были настроены виртуальные хосты на сервере nginx.
3.1) Переходите в /etc/nginx/ и создаете там папку conf.d
3.2) Создайте на всякий случай бэкап конфига nginx.conf перед началом редактирования. Далее отредактируйте nginx.conf, что бы он был примерно такого вида:
user nginx nginx;
worker_processes 12;
error_log /var/log/nginx/error_log info;
events {
worker_connections 1024;
use epoll;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main
'$remote_addr - $remote_user [$time_local] '
'"$request" $status $bytes_sent '
'"$http_referer" "$http_user_agent" '
'"$gzip_ratio"';
client_header_timeout 10m;
client_body_timeout 10m;
send_timeout 10m;
connection_pool_size 256;
client_header_buffer_size 1k;
large_client_header_buffers 4 2k;
request_pool_size 4k;
gzip on;
gzip_min_length 1100;
gzip_buffers 4 8k;
gzip_types text/plain;
output_buffers 1 32k;
postpone_output 1460;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 75 20;
ignore_invalid_headers on;
index index.html;
include /etc/nginx/conf.d/*.conf;
}
worker_processes 12;
error_log /var/log/nginx/error_log info;
events {
worker_connections 1024;
use epoll;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main
'$remote_addr - $remote_user [$time_local] '
'"$request" $status $bytes_sent '
'"$http_referer" "$http_user_agent" '
'"$gzip_ratio"';
client_header_timeout 10m;
client_body_timeout 10m;
send_timeout 10m;
connection_pool_size 256;
client_header_buffer_size 1k;
large_client_header_buffers 4 2k;
request_pool_size 4k;
gzip on;
gzip_min_length 1100;
gzip_buffers 4 8k;
gzip_types text/plain;
output_buffers 1 32k;
postpone_output 1460;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 75 20;
ignore_invalid_headers on;
index index.html;
include /etc/nginx/conf.d/*.conf;
}
Как видите, я выделил последние 2 строки. Это обязательное условие. Идет инклуд к пути, где будут расположены конфиги под ваши виртуальные хосты. А в самой последней строке фигурная скобка } - это обязательное условие синтаксиса nginx.
3.3) Далее переходите в /etc/nginx/conf.d и создаете local.conf
server {
listen 80;
server_name localhost;
access_log /var/log/nginx/localhost.access_log main;
error_log /var/log/nginx/localhost.error_log info;
location / {
root /var/www/localhost/htdocs;
index index.html index.htm index.php;
}
location ~ \.php$ {
root /var/www/localhost/htdocs;
fastcgi_pass unix:/run/php-fpm.socket;
fastcgi_index index.php;
include /etc/nginx/fastcgi.conf;
}
}
listen 80;
server_name localhost;
access_log /var/log/nginx/localhost.access_log main;
error_log /var/log/nginx/localhost.error_log info;
location / {
root /var/www/localhost/htdocs;
index index.html index.htm index.php;
}
location ~ \.php$ {
root /var/www/localhost/htdocs;
fastcgi_pass unix:/run/php-fpm.socket;
fastcgi_index index.php;
include /etc/nginx/fastcgi.conf;
}
}
В local.conf в ветке location / указана родительская директория веб сервера Nginx, она доступна по ip адресу вашего веб сервера - http://ваш_ip. Указанное location ~ \.php$ отвечает за поддержку php-fpm у вашего локального хоста.
3.4) Далее создаем конфиг виртуального хоста уже для вашего доменного имени.
Точно так же, в папке /etc/nginx/conf.d создаете yoursite.com.conf
Конфиг для вашего домена должен быть примерно следующего содержимого:
server {
listen 80;
server_name www.yoursite.com;
return 301 http://yoursite.com$request_uri;
}
server {
listen 80;
server_name yoursite.ru;
access_log /var/log/nginx/yoursite.com.access_log main;
error_log /var/log/nginx/yoursite.com.error_log info;
location / {
root /var/www/yoursite.com/public_html;
index index.html index.htm index.php;
}
location ~ \.php$ {
root /var/www/yoursite.com/public_html;
fastcgi_pass unix:/run/php-fpm.socket;
fastcgi_index index.php;
include /etc/nginx/fastcgi.conf;
}
}
listen 80;
server_name www.yoursite.com;
return 301 http://yoursite.com$request_uri;
}
server {
listen 80;
server_name yoursite.ru;
access_log /var/log/nginx/yoursite.com.access_log main;
error_log /var/log/nginx/yoursite.com.error_log info;
location / {
root /var/www/yoursite.com/public_html;
index index.html index.htm index.php;
}
location ~ \.php$ {
root /var/www/yoursite.com/public_html;
fastcgi_pass unix:/run/php-fpm.socket;
fastcgi_index index.php;
include /etc/nginx/fastcgi.conf;
}
}
Данный конфиг указан как пример, в интернете много информации по настойке виртуальных хостов. Но в данном конфиге уже готовая переадрессация вашего домена с www на без www и настроена поддержка php. Обязательно обратите внимание на root dir в секции location и настройте под ваши нужды. Именно с такой конфигурацией, сертификат Let's encrypt выдался с первого раза, и сайт стал доступен автоматически по https с сертификатом. certbot все сам настроит при выдаче сертификата на ваш домен. Именно в конфиге вашего доменного имени, на который получите сертификат, после выдачи сертификата сможете посмотреть какие произошли конфигурационные изменения.
После проделанной работы перезапускаем nginx:
/etc/init.d/nginx restart
4) Послесловие.
Теперь на вашем сайте есть SSL сертификат, поддержка https, но что то перестало работать. Например отказываются открываться картинки, на некоторых страницах сертификат просто напросто отпадает.
A) Проверьте, открыт ли на вашем веб сервере или на роутере порт 443. Если нет, осуществите проброс порта 443 аналогично порту 80.
B) Проверьте, перенастроили ли вы в админке вашего сайта url сайта с http на https
Вероятнее всего, это не помогло вам. Остается вариант, внесения некоторых изменений в базу данных вашего сайта.
C) Делайте дамп базы данных вашего сайта. Открываете ее в notepad++ и находите по заменам все http: и вводите задание на смену http: на https:
После этого жмете заменить. Смотря от объема базы данных вашего сайта и характеристик вашего компьютера, процесс замены может занять от нескольких секунд до многих минут.
D) Как замена закончится, восстанавливайте измененный дамп базы данных на ваш сайт. После этого проблема с отваливанием сертификата должна быть устранена.
Приятной работы! При копировании материала ссылка на источник обязательна! Источник c400.ru