Задать вопрос

Nginx reverse proxy to https ---> nginx webserver 80 port. браузер выдает mixed content?

Приветствую.
Nginx reverse proxy настроен так, что сначала сам редиректит запросы, приходящие на 80 порт, на 443 порт себе же (серты терминируются на нём же), далее он проксирует на другой вебсервер с nginx на порт 80. Этот второй сервер без ssl-сертов. В общем-то стандартная схема использования.

В случае с WordPress-ом у него прописано в wp-config.php такой код:
if ( (!empty( $_SERVER['HTTP_X_FORWARDED_HOST'])) ||
		     (!empty( $_SERVER['HTTP_X_FORWARDED_FOR'])) ) {
		     		 $_SERVER['HTTPS'] = 'on';

Он соотвественно сообщает обратно браузеру, что он в режиме https. И проблем не возникает.
Однако, попробовал вместо WP поставил WinterCMS (он же OctoberCMS). И в этом случае браузер не отрисовывает стили и js-скрипты, а консоль ругается, что Mixed Content.
Можно ли сделать на стороне вебсервера nginx, чтобы он сообщал браузеру, что вебприложение работает на https? Это дабы не менять код вебприложения, тем самым получить независимость от того, какое вебприложение используется.
Если нельзя, то, подскажите, пожалуйста, что нужно прописать на стороне WinterCMS ?

Вот на всякий случай конфиг nginx reverse proxy:
server {
	listen       80;
	server_name  MY_WEB_DOMAIN;
	return 301 https://$server_name$request_uri;
       }
server {
       listen 443 ssl http2;
       server_name MY_WEB_DOMAIN;
    
       ssl_certificate /etc/letsencrypt/live/MY_WEB_DOMAIN/fullchain.pem;
       ssl_certificate_key /etc/letsencrypt/live/MY_WEB_DOMAIN/privkey.pem;
       ssl_dhparam /etc/nginx/ssl/dhparam2048.pem;
    
       ssl_session_cache    shared:SSL:1m;
       ssl_session_timeout  5m;
    
        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;
        location / {
		proxy_set_header Host $host;
		proxy_set_header X-Forwarded-For $remote_addr;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_set_header X-Real-IP $remote_addr;
		#Задаём заголовок https
		proxy_set_header X-Forwarded-Proto $scheme;
    	proxy_pass http://10.0.5.4:80;
       }
    }


А вот конфиг вебсервер nginx, на котором вертится сайт (вебприложение):
# Upstream to abstract backend connection(s) for php
upstream php {
        server unix:/var/run/php-fpm/php-fpm.sock;
}

server {
        ## Your website name goes here.
        server_name MY_WEB_DOMAIN;
	real_ip_header X-Real-IP;
	set_real_ip_from 203.0.113.3/32;
	set_real_ip_from 10.0.5.0/29;
        root /var/www/MY_WEB_DOMAIN_wintercms/www;
        index index.html index.php;

        location = /favicon.ico {
                log_not_found off;
                access_log off;
        }

        location = /robots.txt {
                allow all;
                log_not_found off;
                access_log off;
        }

        location / {
		try_files $uri $uri/ /index.php?$args;
        }

        location ~ \.php$ {
                include fastcgi_params;
                include fastcgi.conf;
                fastcgi_intercept_errors on;
                fastcgi_pass php;
                fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        }

        location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
                expires max;
                log_not_found off;
        }
}
  • Вопрос задан
  • 497 просмотров
Подписаться 4 Простой 3 комментария
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы