NGINX не проксирует HTTPS трафик

Scaltro

Гуру форума
Регистрация
15 Сен 2007
Сообщения
1.165
Реакции
79
Всем доброго времени суток, столкнулся с такой проблемой:
Есть сервер, он подключен через роутер к интернету, на сервере стоит PROXMOX, внутри PROXMOX есть виртуальные хосты, у каждлго свой IP, который выдал DHCP на роутере, дак вот, на одном из хостов стоит Joomla 3, на самом PROXMOX стоит NGINX, который в зависимости от подключающегося домена выбирает нужный хост, используется такой конфиг NGINX:

Код:
server {
    listen 80;
    server_name domen.ru;
    location / {
        proxy_pass         http://192.168.0.2;
        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;
    }
}

Сам домен делегирован на CloudFlare и подключение всё идёт через HTTPS.
Вот тут и начинается проблема, на виртуальном хосте стоит Joomla и все ссылки генерируемые например компонентов JLSitemap генерируются в HTTP, если же я в джумле в глобал настройках включаю весь сайт через HTTPS, то подключиться по домену не удаётся, однако если я в роутере пробрасываю 80 порт сразу на хост 192.168.0.2, а не через NGINX на PROXMOX, то всё работает, вопрос, почему конфиг NGINX не проксирует HTTPS трафик и как это реализовать? Повторюсь, всё отлично работает без включенной функции HTTPS в джумле, но все ссылки генерируются в HTTP.
 
да бо тут у тебя только http
попробуй добавить

proxy_set_header X-Forwarded-Proto https;
а для https у тебя есть блок ? типа

Код:
server {
               listen 443;
               server_name example.com;
 
cloudflare может по разному проксировать, как в http так и в https
так что в вашем случае проще разобраться с CF , чтоб проксировал на хттп порт вашего сервера,
но по правильному - добавить у себя в nginx https секцию в конфиге и проброс 443 порта
 
да бо тут у тебя только http
попробуй добавить

proxy_set_header X-Forwarded-Proto https;
а для https у тебя есть блок ? типа

Код:
server {
               listen 443;
               server_name example.com;
Нет, такого блока нет, прописать ниже по аналогии с 80?
 
чтото такое надо (или гугл в помощь, примеров море)
Код:
server {
    listen 80;
    listen 443 ssl;

    server_name DOMAIN.com www.DOMAIN.com ;

    ssl_certificate /etc/letsencrypt/live/{DOMAIN/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/DOMAIN/privkey.pem;

    access_log   /var/log/nginx/DOMAIN.log           main;
    error_log    /var/log/nginx/DOMAIN.error.log     error;

    location / {
        proxy_pass         http://192.168.0.2;
        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;
    }
}

А еще, идете на
Для просмотра ссылки Войди или Зарегистрируйся
и в конфиге нжинкса, в конца секции
http {
допишите
Код:
   set_real_ip_from   173.245.48.0/20;
.... и другие ипы ....

   set_real_ip_from   172.64.0.0/13;

   real_ip_header     CF-Connecting-IP;
   real_ip_recursive on;
 
да бо тут у тебя только http
попробуй добавить

proxy_set_header X-Forwarded-Proto https;
а для https у тебя есть блок ? типа

Код:
server {
               listen 443;
               server_name example.com;
Бро, ты лучший, помогло добавление строк:
Код:
proxy_set_header X-Forwarded-Proto https;

От души благодарю!!!
 
Назад
Сверху