Nginx прокси сервер
Установка nginx
Устанавливаем пакет nginx незамысловатой командой:
apt install nginx -y
Для генерации сертификатов используем утилиту certbot:
apt install certbot python3-certbot-nginx
Готово! Да это все. Остальное это создание конфигов для наших сервисов на которые нужно перенаправлять запросы, и получение сертификатов. Делается это одной командой.
certbot --nginx -d наш_домен
Конфигурация Nginx
nc.mywolfram.ru
Чтобы настроить Nginx и прокси для Облачного сервера Nextcloud, нужен сам сервер. Так что сначала его.
После этого уже настраиваем первичный конфиг, для того чтобы получить сертификат.
Создаем сам конфиг, название nc.mywolfram.ru есть то что было создано на сайте hi.net, описывается в разделе Сеть, добавление CNAME записей.
nano /etc/nginx/sites-enabled/nc.mywolfram.ru
Название файла конфигурации для удобства совпадает с доменом, так как их будет несколько.
Вносим данные в конфиг.
server {
listen 80;
server_name nc.mywolfram.ru;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name nc.mywolfram.ru;
}
Сохраняем. Проверяем все ли хорошо с нашим конфигом, и принимается ли он nginx.
nginx -t
Ответ должен быть таков:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Перезагружаем nginx:
service nginx reload
И идем получать сертификаты. Выполняем генерацию для нашего домена.
certbot --nginx -d nc.mywolfram.ru
При выполнении будет задан вопрос о вводим email адреса
Вводим: адрес_электронной_почты
На вопрос о редиректе нужно согласиться. На данный момент это ответ 2.
По окончании одной из строк результатов должен появится следующий текст:
Congratulations! You have successfully enabled https://nc.mywolfram.ru
Теперь идем редактировать конфиг. В него уже внёс немало информации certbot. Можно её всю удалить, и вставить из цитаты.
#Блок сообщает о том, что это за сервер. С каким доменным именем он работает, при обращении с http.
server {
listen 80;
server_name nc.mywolfram.ru;
return 301 https://$server_name$request_uri;
}
#но так как мы за безопасность, любые обращения по http мы перенаправляем в следующий блок. Который описывает свойства https. И перенаправляет уже на нужный нам веб сервер, в данном случае nextcloud.
server {
listen 443 ssl;
server_name nc.mywolfram.ru;
#Указываем размер максимально возможного для загрузки файла через веб
client_max_body_size 10G;
#Сертификат
ssl_certificate /etc/letsencrypt/live/nc.mywolfram.ru/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/nc.mywolfram.ru/privkey.pem; # managed by Certbot
# Это и есть перенаправление на наше 130 локальный адрес.
location / {
proxy_headers_hash_max_size 512;
proxy_headers_hash_bucket_size 64;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
add_header Front-End-Https on;
proxy_pass http://192.168.1.130;
}
}
Сохраняем. Данные для конфига подобраны опытным путем, потом и кровью. В основном на сайтах инструкциях в них всунута уйма информации. Тут же есть именно то, что позволит попасть с сертификатом на веб сервер nextcloud. Возможно, в дальнейшем будет дополняться.
После изменения сохраняем конфиг.
nginx -t
Ответ должен быть таков:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Перезагружаем nginx:
service nginx reload
pm.mywolfram.ru
Доступ к веб интерфейсу гипервизора proxmox. Внутри сети как обычно все работает. Но как попасть снаружи? Снова прокси. Снова домен. Пользуемся в полной мере.
Придумываем домен третьего уровня: pm.mywolfram.ru.
Создаем конфиг.
nano /etc/nginx/sites-enabled/pm.mywolfram.ru
Вставляем:
server {
listen 443 ssl;
server_name pm.mywolfram.ru;
}
Все как в прошлый раз:
nginx -t
service nginx reload
certbot --nginx -d pm.mywolfram.ru
Редактируем конфиг.
nano /etc/nginx/sites-enabled/pm.mywolfram.ru
server {
listen 80;
server_name pm.mywolfram.ru;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name pm.mywolfram.ru;
ssl on;ssl_certificate /etc/letsencrypt/live/pm.mywolfram.ru/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/pm.mywolfram.ru/privkey.pem; # managed by Certbot
location / {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_pass https://192.168.1.164:8006;
proxy_buffering off;
client_max_body_size 0;
proxy_connect_timeout 3600s;
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
send_timeout 3600s;
}
}
Проверяем что все в порядке
nginx -t
Перезагружаем nginx
service nginx reload
Теперь мы можем получить доступ к веб интерфейсу proxmox, отовсюду и безопасно.
de.mywolfram.ru
Подключаться к качалке из вне тоже лишним не будет.
Создаем домен третьего уровня для deluge, это я про de.mywolfram.ru на сайте dns.hi.net.
nano /etc/nginx/sites-enabled/de.mywolfram.ru
server {
listen 80;
server_name de.mywolfram.ru;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name de.mywolfram.ru;
ssl_certificate_key
}
nginx -t
service nginx reload
certbot --nginx -d de.mywolfram.ru
Редактируем полученный конфиг.
nano /etc/nginx/sites-enabled/de.mywolfram.ru
server {
listen 80;
server_name de.mywolfram.ru;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl; # managed by Certbot
server_name de.mywolfram.ru;
access_log /var/log/nginx/de.mywolfram.ru.access;
error_log /var/log/nginx/de.mywolfram.ru.error;
ssl_certificate /etc/letsencrypt/live/de.mywolfram.ru/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/de.mywolfram.ru/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
add_header Strict-Transport-Security "max-age=31536000" always; # managed by Certbot
ssl_trusted_certificate /etc/letsencrypt/live/de.mywolfram.ru/chain.pem; # managed by Certbot
ssl_stapling on; # managed by Certbot
ssl_stapling_verify on; # managed by Certbot
location / {
proxy_pass http://192.168.1.92:8112;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
nginx -t
service nginx reload
Радуемся!
Zabbix сервер.
И к Zabbix серверу мы так же хотим качественно попадать, по высококачественному домену третьего уровня.
nano /etc/nginx/sites-enabled/zb.mywolfram.ru
server {
listen 80;
server_name zb.mywolfram.ru;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name zb.mywolfram.ru;
ssl_certificate_key
}