Я пытался достичь следующего, но вот уже несколько дней мои мысли терпят неудачу.
Я пытаюсь отменить прокси-службы 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 я не могу полагаться на это решение. Что я делаю не так ?