@SchmeL

Как правильно настроить locations в nginx за балансировщиком?

Схема примерно следующая: Есть site.ru, состоящий из нескольких приложений - сайт на php и java приложения для личного кабинета. В данный момент для кабинета настроен поддомен и все работает - там один location, который проксируется сразу на java приложение.

location / {
  proxy_pass http://cabinet/;
}


Но появилась необходимость вывести приложение из поддомена и сделать доступ по url: https://site.ru/cabinet

Если использовать настройки ниже, то https://site.ru/cabinet открывается без стилей и js.
Дело в том, что в самом java приложении есть пути вида /static/jqery.js - на которые выдает 404 и стили не грузятся.
Часть сайта на php работает нормально. Сейчас ссылки ведут на php сайт https://site.ru/static/script.js Возможно ли сделать, так чтобы при заходе на /cabinet все ссылки на статичные файлы были вида https://site.ru/cabinet/static/script.js ?

# Сервера с php приложением
upstream php {
ip_hash;
server 192.168.100.20 max_fails=2 fail_timeout=360 weight=10;
server 192.168.100.30 max_fails=2 fail_timeout=360;
}

# Сервера с java приложением
upstream cabinet {
ip_hash;
server 192.168.100.101 max_fails=2 fail_timeout=360;
}

# Балансировщик, если запрашивают / - отправляет на php, если /cabinet - на java приложение
server {
listen 443 ssl;
server_name site.ru;

ssl on;
ssl_certificate         /etc/nginx/ssl/site.ru.crt;
ssl_certificate_key     /etc/nginx/ssl/site.ru.key;
ssl_protocols                   TLSv1 TLSv1.1 TLSv1.2;

   location / {
	proxy_pass http://php;
	proxy_redirect off;
	proxy_set_header Host $host;
	proxy_http_version 1.1;
	proxy_set_header X-Real-IP $remote_addr;
	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	proxy_next_upstream error timeout invalid_header http_500 http_503 http_504 http_502;
	proxy_connect_timeout 50;
	proxy_read_timeout 50;
	}

    location /cabinet {
	proxy_pass http://cabinet;
	proxy_redirect off;
	proxy_set_header Host $host;
	proxy_http_version 1.1;
	proxy_set_header X-Real-IP $remote_addr;
	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	proxy_next_upstream error timeout invalid_header http_500 http_503 http_504 http_502;
	proxy_connect_timeout 50;
	proxy_read_timeout 50;
	}
}

}
  • Вопрос задан
  • 264 просмотра
Пригласить эксперта
Ответы на вопрос 2
@DuD
вариантов 2.
Либо в локейшне cabinet регулякой исключать статику, чтобы она попадала на /
Либо сделать локейшн /cabinet/static и его направить туда где лежит статика.
Ответ написан
Комментировать
@SchmeL Автор вопроса
Либо в локейшне cabinet регулякой исключать статику, чтобы она попадала на /

А можно пример? Как раз таки с регулярками и проблема.
Второй вариант отпадает, так как статика вообще на другой машине лежит, а конструкция вида
location /cabinet/static {
  proxy_pass http://cabinet;


не сработала.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы