Ну приступим :)
Имеются 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((
Небольшой скриншот отдельной части сайта, чтобы было визуальное понимание еще
Ответы на вопросы, которые могут возникнуть.
Для чего проксирование? Для защиты от DDoS атак на l4. Этот ДЦ обладает подобной защитой до 750Gb, а основной сервер находится в другом ДЦ, который никак не фильтрует траффик и кладется на раз два при превышении атаки в 1Gbit (у меня такой канал).
Другие сервисы проксирования не подходят, я сам себе хозяин :)
P.s. у дц тунели запрещены. Сам не проверял и нет желания, т.к. начал уже развивать эту тему.