LINUX.ORG.RU

Установить SSL на виртуальный хост ProxMox

 , , ,


0

1

Всем доброго времени суток, не знаю как правильно сформулировать запрос в гугл чтоб найти инструкцию, если такая есть конечно) Суть такая, есть машина на ProxMox с белым IP, на нём стоит NGINX, на ProxMox есть виртуальный хост с IP, предположим, 192.168.0.3, на нём висит сайт, при обращении к белому IP с определённого домена идёт обращение на 192.168.0.3 через NGINX. Сам домен идет через CloudFlare и все обращения идут через SSL, но скрипт движка на хосте 192.168.0.3 работает в режиме http и все генерируемые ссылки, например той же карты сайта формируются без SSL, вот и вопрос, как на виртуальный хост поставить CertBot чтобы был привязан Letsencrypt и в движке можно было включить перенаправление на HTTPS?



Последнее исправление: Mooks (всего исправлений: 2)

В очередной раз, в дополнение предыдущей темы, вы делаете что-то не так.

Сайту должно быть всё-равно, если перед ним правильно настроен реверс-прокси с защищённым соединением (nginx или Cloudflare), дополнительно защищать канал между реверс-прокси и «сайтом» в общем случае не надо.

vvn_black ★★★★★
()
Ответ на: комментарий от Mooks

Опять же в общем случае, добавить сертификаты полученные в Cloudflare в свой Nginx, который слушает ваше доменное имя на 443 порту, а проксирование внутри своей системы серверов на 192.168.0.3 уже настроить по 80 порту.

Вот, как-то так https://www.digitalocean.com/community/tutorials/how-to-host-a-website-using-cloudflare-and-nginx-on-ubuntu-18-04-ru

vvn_black ★★★★★
()
Ответ на: комментарий от vvn_black

В виртуальном хосте NGINX на ProxMox прописан слудующий конфиг:

server {
    listen 80;
	fastcgi_param HTTPS on;
    server_name www.domen.ru;
    location / {
        proxy_pass         http://192.168.0.3:80;
        proxy_http_version 1.1;
        proxy_set_header   Upgrade $http_upgrade;
        proxy_set_header   Connection keep-alive;
        proxy_set_header   Host $host;
        proxy_cache_bypass $http_upgrade;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   X-Forwarded-Proto $scheme;
    }
}
Mooks
() автор топика
Последнее исправление: Mooks (всего исправлений: 2)
Ответ на: комментарий от vvn_black

дополнительно защищать канал между реверс-прокси и «сайтом» в общем случае не надо

Не надо, но по разным причинам:

1) в случае со своим nginx - потому что этот канал целиком в локалке

2) в случае с cloudflare - потому что защита и так уже дискредитирована третьими лицами и толку её поддерживать нет - пусть митмят сколько хотят

firkax ★★★★★
()

но скрипт движка на хосте 192.168.0.3 работает в режиме http

Настрой «скрипт движка» (что бы ни скрывалось под этими словами) чтобы он работал в режиме «https», т.е. генерировал правильные ссылки. Сертификаты и ssl тут ни при чём.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от Mooks

fastcgi_param HTTPS on;

proxy_pass http://192.168.0.3:80;

fastcgi_param - для fastcgi, а у тебя http-proxy, у него единственный способ передачи параметров это proxy_set_header, но параметры там другие чем в fastcgi.

Да и вообще:

listen 80;
proxy_pass http://192.168.0.3:80;

Это он что сам себе по кругу отсылает? Что ты вообще сделать пытаешься этим конфигом?

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от firkax

А как правильно то прописать конфиг тогда?

При включении в скрипте HTTPS в браузере выдаёт:

Циклическое перенаправление на странице

При соединении с www.site.ru произошла ошибка.

Эта проблема может возникать при отключении или запрещении принятия кук.
Mooks
() автор топика
Ответ на: комментарий от vvn_black

Да, получается так, если я с роутера пробрасываю напрямую обращение к виртуальному хосту 192.168.0.3 и в скрипте включаю полную поддержку SSL, то всё норм работает. А если с роутера пробрасываю сначала на хост proxmox, а там уже проксирую через NGINX на виртуальный хост, то ругается. Значит вопрос становится уже, как правильно настроить проксирующий конфиг NGINX?

Mooks
() автор топика
Ответ на: комментарий от Mooks

Ты что-то кроме просмотра надписей из браузера и копипаста конфигов из инета можешь сделать? Ну посмотри, что там за перенаправление хотя бы. Настройки ssl никакого отношения к скриптам движка не имеют.

firkax ★★★★★
()
Ответ на: комментарий от Mooks

Значит вопрос становится уже, как правильно настроить проксирующий конфиг NGINX?

Вы статью на которую я дал ссылку прочитали, что там непонятно по настройке Nginx?

И, кстати, теперь ещё и роутер? Давайте, уж как-нибудь сами, или без pfsense и Nginx, только с роутером или разбирайтесь самостоятельно, или ждите помощи ещё от кого-то, более терпеливого.

vvn_black ★★★★★
()

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

заменяем в теле документов http на https нужен модуль ngx_http_substitutions_filter_modul скорее всего уже есть

# это отключает сжатие документов

proxy_set_header Accept-Encoding "";

subs_filter "http://192.168.0.3" "https://www.domen.ru" g;

результат где то так

server {

listen 80;

server_name http://www.domen.ru;

location / {

proxy_set_header Accept-Encoding "";

subs_filter "http://192.168.0.3" "https://www.domen.ru" g;

proxy_pass http://192.168.0.3:80;

...

ещё можно средствами нджинса всё это проделать два года назад этим маялся уже плохо помню

s-warus ★★★
()
Последнее исправление: s-warus (всего исправлений: 1)
Ответ на: комментарий от s-warus

и вот ещё чтобы во внутреностях всяких png и jpeg не рылся

subs_filter_types text/html text/css text/xml;

могу инструкцию по получению сертификатов набросать

s-warus ★★★
()
Последнее исправление: s-warus (всего исправлений: 1)
Ответ на: комментарий от s-warus

Я далеко не специалист и мне трудно объяснить ситуацию,я нарисовал схему моего подключения и сервера, посмотрите пожалуйста, а далее я перефразирую вопрос:

https://imgbox.com/xvTKAnS2
На хосте ProxMox в NGINX перенапрявляю домены конфигами виртуальных хостов, выглядят они так:
server {
    listen 80;
    server_name domen.ru;
    location / {
        proxy_pass         http://192.168.0.3;
        proxy_http_version 1.1;
        proxy_set_header   Upgrade $http_upgrade;
        proxy_set_header   Connection keep-alive;
        proxy_set_header   Host $host;
        proxy_cache_bypass $http_upgrade;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Proto $scheme;
    }
}

Но проблема вот в чём, на хосте стоит скрипт, а именно Joomla, всё в целом работает нормально, но вот одно но, её компоненты по типу карты сайта и прочих, генерируют ссылки в формате HTTP, если я с такой схемой подключения в движке включаю функцию перенаправлять весь сайт через HTTPS, то сайт недоступен, если я в роутере пробрасываю порт не на proxmox хост, а напрямую на виртуальный хост 192.168.0.3, то всё работает, но соответственно отваливаются остальные сайты на других виртуальных хостах. Вопрос то заключается почему NGINX не проксирует HTTPS трафик и как это реализовать?

Попробовал в конфиг забить ваш, но без резудьтатов...

P.S Повторюсь, я не профи, а только начинаю постигать эту рутину, не всегда понимаю как правильно сформулировать вопрос чтобы нормально его загуглить, прошу отнестись с пониманием и оказать помощь, кто чем может)))

Mooks
() автор топика
Последнее исправление: Mooks (всего исправлений: 2)

Всем спасибо кто реально пытался помочь, нашёл следующее решение, в проксирующий конфиг NGINX добавил строку:

proxy_set_header X-Forwarded-Proto https;
И всё заработало как задумывалось!!!

Mooks
() автор топика