Nginx или приложение отсекает часть URI
У меня есть эта цепочка прокси: прокси nginx для моего внутреннего nginx, который прокси для tomcat
основной nginx:
server {
listen 80 default_server;
access_log /var/log/nginx/eco.access.log main;
error_log /var/log/nginx/eco.error.log;
root /usr/share/nginx/html;
location / {
index index.html;
}
location /analytics {
proxy_pass http://10.89.81.130:80/;
proxy_redirect off;
proxy_buffering 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 REMOTE_ADDR $remote_addr;
}
внутренний nginx:
server {
listen 80 default_server;
proxy_intercept_errors on;
error_page 404 = /error404_nx.html;
root /usr/share/nginx/html;
location / {
root /usr/share/nginx/html;
index index.html;
}
location /ords {
rewrite ^\/ords\/f.p(.*)$ /analytics/ords/$1 break;
proxy_pass http://127.0.0.1:8080;
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 REMOTE_ADDR $remote_addr;
}
Я ожидаю, что запрос будет / analytics / ords /..., но в результате / ords /... без аналитики, и я получаю ошибку 404, что я делаю неправильно?
1 ответ
В твоем главном nginx
использовать:
location /analytics/ {
proxy_pass http://10.89.81.130:80/;
...
}
Обратите внимание на дополнительные /
, Это вызывает псевдоним URI из /analytics/ords
в /ords
до его получения внутренним nginx
, Который затем передается неизмененным как /ords
на порт 8080.
Смотрите этот документ для деталей.