Nginx прокси сервер

Материал из wolfram
Перейти к навигации Перейти к поиску

Установка 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