Nginx прокси сервер: различия между версиями

Материал из wolfram
Перейти к навигации Перейти к поиску
 
Строка 158: Строка 158:
  Congratulations! You have successfully enabled <nowiki>https://nc.mywolfram.ru</nowiki>
  Congratulations! You have successfully enabled <nowiki>https://nc.mywolfram.ru</nowiki>
Теперь идем редактировать конфиг. В него уже внёс немало информации certbot. Можно её всю удалить, и вставить из цитаты.<syntaxhighlight lang="nginx">
Теперь идем редактировать конфиг. В него уже внёс немало информации certbot. Можно её всю удалить, и вставить из цитаты.<syntaxhighlight lang="nginx">
#Блок сообщает о том, что это за сервер. С каким доменным именем он работает, при обращении с http.
server {
server {
     listen 80;
     listen 80;
Строка 164: Строка 163:
     return 301 https://$server_name$request_uri;
     return 301 https://$server_name$request_uri;
}
}
#но так как мы за безопасность, любые обращения по http мы перенаправляем в следующий блок. Который описывает свойства https. И перенаправляет уже на нужный нам веб сервер, в данном случае nextcloud.
 
server {
server {
     listen 443 ssl;
     listen 443 ssl;
     server_name nc.mywolfram.ru;
     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 /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
     ssl_certificate_key /etc/letsencrypt/live/nc.mywolfram.ru/privkey.pem; # managed by Certbot
     add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;" always;
     include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
# Это и есть перенаправление на наше 130 локальный адрес.
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
    client_max_body_size 10G;
     location / {
     location / {
        proxy_headers_hash_max_size 512;
        proxy_headers_hash_bucket_size 64;
         proxy_set_header Host $host;
         proxy_set_header Host $host;
         proxy_set_header X-Forwarded-Proto $scheme;
         proxy_set_header X-Forwarded-Proto $scheme;
         proxy_set_header X-Real-IP $remote_addr;
         proxy_set_header X-Real-IP $remote_addr;
         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        add_header Front-End-Https on;
         proxy_pass http://192.168.1.145;
         proxy_pass http://192.168.1.154;
        proxy_read_timeout 900s;
        proxy_connect_timeout 900s;
        proxy_send_timeout 900s;
     }
     }
    location ^~ /.well-known {
# Для корректной работы .well-known (например, проверки Let's Encrypt)
        # The following 6 rules are borrowed from `.htaccess`
    location ~ ^/.well-known {
 
         proxy_pass http://192.168.1.145;
        rewrite ^/\.well-known/host-meta\.json  /public.php?service=host-meta-json  last;
         proxy_set_header Host $host;
        rewrite ^/\.well-known/host-meta        /public.php?service=host-meta      last;
        rewrite ^/\.well-known/webfinger        /public.php?service=webfinger      last;
         rewrite ^/\.well-known/nodeinfo        /public.php?service=nodeinfo        last;
 
        location = /.well-known/carddav    { return 301 /remote.php/dav/; }
         location = /.well-known/caldav      { return 301 /remote.php/dav/; }
 
        try_files $uri $uri/ =404;
     }
     }
    add_header Strict-Transport-Security "max-age=15552000; includeSubDomains" always;
}
}
</syntaxhighlight>Сохраняем. Данные для конфига подобраны опытным путем, потом и кровью. В основном на сайтах инструкциях в них всунута уйма информации. Тут же есть именно то, что позволит попасть с сертификатом на веб сервер nextcloud. Возможно, в дальнейшем будет дополняться.  
</syntaxhighlight>Сохраняем. Данные для конфига подобраны опытным путем, потом и кровью. В основном на сайтах инструкциях в них всунута уйма информации. Тут же есть именно то, что позволит попасть с сертификатом на веб сервер nextcloud. Возможно, в дальнейшем будет дополняться.  

Текущая версия от 15:39, 11 марта 2025

Настройка Proxmox для Nginx


Загрузка образа Ubuntu

Получается мы устанавливаем ubuntu server как виртуальную в среде Proxmox.

На данный момент это версия 18.04.4 LTS.

На этот раз ни на какие накопители ничего записывать не нужно.

Требуется загрузить образ в пространство Proxmox, в хранилище. В нашем случае подойдет local.

Выбираем local в узле pve, переходим в “Содержимое”.

Нажимаем “Загрузить” и выбираем наш образ.

Загружаем, ожидаем.

Создание VM

Нажимаем: создать VM:

В разделе Общее:

Узел: pve

VM ID: 103

Имя: nginx

В разделе ОС:

Хранилище: local

ISO образ: То, что загрузили с официального сайта Ubuntu.

В разделе Жесткий диск:

Шина: VirtIO Block

Хранилище: local-lvm

Размер: 10

Кэш: Write through

В разделе Процессор:

Ядра: 2

В разделе Память:

Память: 512

Готово.

Установка OS

Описываю только то, на что стоит обратить внимания, так как установить ос для Nginx можно просто по умолчанию.

Тут все также, как и в nexcloud.

Но при вопросе в разделе Filesystem setup выбираем автоматическую, и наш единственный раздел. Для того чтобы, установщик на своё усмотрение разбил диск.  

Тут очень мало важны размеры виртуальной оперативной памяти, так как машина выполняет очень узкую задачу.

 

Начинается установка. При этом она идет в фоне.

В это время заполняем данные пользователя и машины.


Your name: vova

your server’s name: nginx

Pick a username: vova

Choose password: пароль_пользователя

Confirm your password: пароль_пользователя

Готово

На вопрос установить ли ssh соглашаемся, поставив крестик пробелом.

Готово

Ничего не выбираем и говорим Готово. Ждем окончания установки.  

По окончании Reboot

enter

ОС перезагрузиться, но уже в установленном виде. С ней бы выполнить стандартный набор операций.  


Обновляем репозитории:

apt-get update

Выполняем обновление пакетов из репозиториев

apt-get upgrade –y

Устанавливаем файловый менеджер mc


ОС готова переходим к установке Nginx.

Установка nginx

Устанавливаем пакет nginx незамысловатой командой:

apt install nginx -y

Для генерации сертификатов используем утилиту certbot:

apt install certbot python3-certbot-nginx

Готово! Да это все. Остальное это создание конфигов для наших сервисов на которые нужно перенаправлять запросы, и получение сертификатов. Делается это одной командой.

certbot --nginx -d наш_домен

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

nc.mywolfram.ru

Чтобы настроить Nginx и прокси для Облачного сервера Nextcloud, нужен сам сеpaрвер. Так что сначала его.

После этого уже настраиваем первичный конфиг, для того чтобы получить сертификат.

Создаем сам конфиг, название 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. Можно её всю удалить, и вставить из цитаты.

server {
    listen 80;
    server_name nc.mywolfram.ru;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl;
    server_name nc.mywolfram.ru;

    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
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
    client_max_body_size 10G;
    location / {
        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;
        proxy_pass http://192.168.1.145;
        proxy_read_timeout 900s;
        proxy_connect_timeout 900s;
        proxy_send_timeout 900s;
    }
# Для корректной работы .well-known (например, проверки Let's Encrypt)
    location ~ ^/.well-known {
        proxy_pass http://192.168.1.145;
        proxy_set_header Host $host;
    }
    add_header Strict-Transport-Security "max-age=15552000; includeSubDomains" always;
}

Сохраняем. Данные для конфига подобраны опытным путем, потом и кровью. В основном на сайтах инструкциях в них всунута уйма информации. Тут же есть именно то, что позволит попасть с сертификатом на веб сервер 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;
    erver_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  
}

Смотрим статус

nginx -t

Перезапускам Ngings

service nginx reload

Получаем сертификат

certbot --nginx -d 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 /etc/letsencrypt/live/zb.mywolfram.ru/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/zb.mywolfram.ru/privkey.pem; # managed by Certbot
    location / {
        proxy_pass http://192.168.1.226;
        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

Готово!