@plavsk

Nginx в режиме обратного прокси нужно сайта сдвинуть в?

У нас несколько беков и теперь их решили собрать под одним доменным именем.
При сдвиге location работает частично , проблема что не грузить стили , а стили он ищет от корня а не от сдвига.
Конфиг nginx

location ~* ^/a/(.*)$ {
if ($http_cookie ~* ".+" ) {
set $do_not_cache 1;
}
proxy_cache_bypass $do_not_cache;
if ($request_method !~ ^(OPTIONS|GET|HEAD|POST|PUT|DELETE|TRACE|CONNECT|PROPFIND|PROPPATCH|MKCOL|COPY|MOVE|LOCK|UNLOCK|VERSION-CONTROL|REPORT|CHECKOUT|CHECKIN|UNCHECKOUT|MKWORKSPACE|UPDATE|LABEL|MERGE|BASELINE-CONTROL|MKACTIVITY|ORDERPATCH|ACL|SEARCH|MKCALENDAR|PATCH)$) {
return 405;
}

proxy_set_header Host $host
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Connection "";

proxy_ignore_headers "Cache-Control" "Expires";
proxy_cache cache;
proxy_cache_valid 1d;
proxy_cache_valid 404 502 503 1m;

rewrite ^/a/(.*)$ /$1 break;

proxy_http_version 1.1;
proxy_read_timeout 1800s;
proxy_send_timeout 1800s;

client_max_body_size 0;
proxy_buffering on;
proxy_request_buffering off;
proxy_redirect off;
proxy_pass 'back4';

То есть я его от корня сдвигаю на дерективу /a/ сайт грузится без стилей смотрю через консоль браузера они ищется от корня а не от /a/
Помогите кто знает как это поправить
  • Вопрос задан
  • 173 просмотра
Пригласить эксперта
Ответы на вопрос 2
@Fenrir89
Может проще сделать в виде нескольких страниц вида www.asd.ry/y,www.asd.ry/z, и настроить разные location для них с разным корнем
Ответ написан
@MadridianFox
Web-программист, многостаночник
Как уже написали в комментарии - то где искать стили решает приложение и по хорошему надо в каждом бэке сделать пути для подгрузки статики настраиваемыми.

Однако, если все бэки находятся на одной машине, можно подставить костыль.
Вы можете создать особый location, даже несколько, которые будут искать запрошенный файл сначала в одной папке, потом в другой, потом в третьей.
location ~* \.(css|js)$ {
    root /path/to/back1;
    try_files $uri @back2;
}

location @back2 {
   root /path/to/back2;
   try_files $uri @back3;
}

location @back3 {
   root /path/to/back3;
   try_files $uri =404;
}


Если один из бэков находится не на этой же машине, то можно его поставить в конец и делать на него проксирование:
location @back3 {
   proxy_pass http://external-service.com;
}


Ещё, можно рассмотреть вариант с условиями, которые смотрят на загловки запроса, ну там referer какой-нибудь или origin, и в зависимости от этого проксируют на тот или иной бэк.
Ответ написан
Ваш ответ на вопрос

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

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