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