@dtAnGel

Как доделать проксирование на nginx с ssl?

Ну приступим :)
Имеются 2 сервера основной и для просирования траффика. На обоих ставил панель управления VestaCP, чтобы быстро все поставить и не заморачиваться.

Я успешно сделал проксирование http траффика, но у меня стоит на сайте ssl сертификат и все слетает. Я не буду показывать сайт и IP адреса, так как переживаю за свой ресурс.

site_name - имя сайта
Serv1 - основной сервер
Serv2 - прокси сервер
mIP1 - IP основного сервера
mIP2 - IP прокси сервера

Конфиг Serv2:
server {
    listen      mIP2:443;
    server_name site_name  www.site_name;
    root        /home/admin/web/site_name/public_html;
    index       index.php index.html index.htm;
    access_log  /var/log/nginx/domains/site_name.log combined;
    access_log  /var/log/nginx/domains/site_name.bytes bytes;
    error_log   /var/log/nginx/domains/site_name.com.error.log error;

    ssl         on;
    ssl_certificate      /home/admin/conf/web/ssl.site_name.pem;
    ssl_certificate_key  /home/admin/conf/web/ssl.site_name.key;

    location / {
		proxy_pass https://mIP1:443;
		proxy_set_header Host $host;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_set_header X-Real-IP $remote_addr;
		proxy_set_header realip $remote_addr;
		try_files $uri $uri/ /index.php?$uri&$args;
        location ~* ^.+\.(jpeg|jpg|png|gif|bmp|ico|svg|css|js)$ {
            expires     max;
        }

        location ~ [^/]\.php(/|$) {
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            if (!-f $document_root$fastcgi_script_name) {
                return  404;
            }

            fastcgi_pass    127.0.0.1:9001;
            fastcgi_index   index.php;
            include         /etc/nginx/fastcgi_params;
        }
    }


Конфиг Serv1:
server {
    listen      mIP1:443;
    server_name site_name  www.site_name ;
#	if ($http_user_agent ~* (WordPress/4)) {
#	return 444;
#	}
#	if ($server_protocol = "HTTP/1.0") {
#	return 444;
#	}
#	if ($http_user_agent = "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0") {
#	return 444;
#	}
#	if ($http_user_agent ~* (2743.116|2311.135|2704.103)) {
#	return 444; }
    root        /home/admin/web/site_name /public_html;
    index       index.php index.html index.htm;
    access_log  /var/log/nginx/domains/site_name .log combined;
    access_log  /var/log/nginx/domains/site_name .bytes bytes;
    error_log   /var/log/nginx/domains/site_name .error.log error;

    ssl         on;
    ssl_certificate      /home/admin/conf/web/ssl.site_name .pem;
    ssl_certificate_key  /home/admin/conf/web/ssl.site_name .key;

    location / {
		set_real_ip_from mIP1;
		real_ip_header X-Forwarded-For;
		real_ip_recursive on;
		try_files $uri $uri/ /index.php?$uri&$args;
        location ~* ^.+\.(jpeg|jpg|png|gif|bmp|ico|svg|css|js)$ {
            expires     max;
        }

        location ~ [^/]\.php(/|$) {
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            if (!-f $document_root$fastcgi_script_name) {
                return  404;
            }

            fastcgi_pass    127.0.0.1:9004;
            fastcgi_index   index.php;
            include         /etc/nginx/fastcgi_params;
        }
    }

Не обращайте внимание на закомментированные строки.

Выше я предоставил конфиги с обоих серверов с именами snginx.conf. В той же папке есть nginx.conf, там стоит редирект на ssl.
rewrite ^ https://site_name/$request_uri? permanent;
	if ($host != site_name) {
    rewrite ^(.*) https://site_name/$request_uri? permanent;
    }

Как видите - ничего интересного. Больше правок там не было.
Я в обеих панелях (на обоих серверах) я подключил ssl сертификат.

Повторюсь, как мне сделать так, чтобы стилизация сайта не ехала. Я уверен на 29999*n, что проблема именно в проксировании ssl. Я думаю, что оба сервера общаются между собой по http((

Небольшой скриншот отдельной части сайта, чтобы было визуальное понимание еще
d7cad32ed461427d8b16073785b55f94.png

Ответы на вопросы, которые могут возникнуть.
Для чего проксирование? Для защиты от DDoS атак на l4. Этот ДЦ обладает подобной защитой до 750Gb, а основной сервер находится в другом ДЦ, который никак не фильтрует траффик и кладется на раз два при превышении атаки в 1Gbit (у меня такой канал).
Другие сервисы проксирования не подходят, я сам себе хозяин :)
P.s. у дц тунели запрещены. Сам не проверял и нет желания, т.к. начал уже развивать эту тему.
  • Вопрос задан
  • 897 просмотров
Пригласить эксперта
Ответы на вопрос 2
prolis
@prolis
Независимый разработчик BPM
Нажмите на странице браузера f12, увидите, что стили не загрузились, потому, что они прописаны по http. Ищите место хардкода в движке и меняете, как было сказано выше, http на //.
Ответ написан
Комментировать
petermzg
@petermzg
Самый лучший программист
Может конечно я чего-то не допонимаю в настройках nginx, но зачем с проксирующего сервера Serv2 трафик оставлять SSL?
SSL это всетаки нагрузка на сервер и если Serv1 не принимает прямых конектов, то зачем на него кидать шифрованный трафик?
Ответ написан
Ваш ответ на вопрос

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

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