Назад | Перейти на главную страницу

nginx proxy_pass не может обслуживать статические файлы

Я пытался достичь следующего, но вот уже несколько дней мои мысли терпят неудачу.

Я пытаюсь отменить прокси-службы 2 на основе URL-адресов, как показано ниже:

http://host/api/ => http://backend/
http://host/backoffice/ => http://backoffice/

(и весь конечный путь после него должен выполняться службами 1 и 2, т.е. http://host/service1/foo/bar => http://server1/foo/bar)

Перенаправление хорошо работает, когда я обращаюсь к нестатическим файлам (служба 1 - это API для отдыха, который отвечает), но у меня есть следующее, когда дело доходит до доступа к статическим ресурсам (служба 2 - это приложение для реагирования, обслуживаемое сервером nginx). Обратный прокси показывает 404 для файлов css и js.

Конфигурация прокси следующая:

http {

include       mime.types;
default_type  application/octet-stream;

sendfile        on;
keepalive_timeout  10;

client_header_timeout 10;
client_body_timeout 10;

send_timeout 10;

tcp_nopush on;
tcp_nodelay on;

proxy_redirect     off;
proxy_set_header   Host $host;
proxy_set_header   X-Real-IP $remote_addr;
proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header   X-Forwarded-Host $server_name;

server {
    listen       80;
    listen       443;
    server_name  reverse-proxy;

    location /backoffice/ {
       proxy_pass http://backoffice:80/;
       rewrite /backoffice/(.*) /$1  break;
    }
    location /api/ {
    proxy_pass http://backend:8000/;
    rewrite /backend/(.*) /$1  break;
    }
  } 
}

Посмотрев логи обратного прокси, я прочитал следующее:

172.31.39.227 - - [03/Sep/2019:08:37:44 +0000] "GET 
/static/js/2.741f53a0.chunk.js HTTP/1.1" 404 572 "http://host/backoffice/" "Mozilla/5.0 (X11; 
Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) 
Chrome/74.0.3729.169 Safari/537.36"
2019/09/03 08:37:44 [error] 7#7: *669 open() 
"/etc/nginx/html/static/js/2.741f53a0.chunk.js" failed (2: No such 
file or directory), client: <host-ip>, server: reverse-proxy, 
request: "GET /static/js/2.741f53a0.chunk.js HTTP/1.1", host: 
"host", referrer: 
"http://host/backoffice/"
2019/09/03 08:37:44 [error] 7#7: *671 open() 
"/etc/nginx/html/static/js/main.cf227c52.chunk.js" failed (2: No such 
file or directory), client: <host-ip>, server: reverse-proxy, 
request: "GET /static/js/main.cf227c52.chunk.js HTTP/1.1", host: 
"host", referrer: 
"http://host/backoffice/"
<server ip> - - [03/Sep/2019:08:37:44 +0000] "GET 
/static/js/main.cf227c52.chunk.js HTTP/1.1" 404 572 "http://host/backoffice/" "Mozilla/5.0 (X11; 
Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) 
Chrome/74.0.3729.169 Safari/537.36"

(Я изменил имена хостов и IP в этом журнале)

Первоначально я выполнял перенаправление на основе прослушивателей портов, и это работало как шарм, но для целей DNS я не могу полагаться на это решение. Что я делаю не так ?