Мне нужно создать довольно простую карту в Nginx, перенаправляющую подпуть на другой сервер, расположенный в той же подсети.
Я пытался поместить это в раздел сервера
location /tomcatapi/ {
rewrite /tomcatapi/(.*) $1 break;
proxy_pass http://192.168.0.3:8443;
}
но все, что я получаю http://www.myservice.com/tomcatapi/ это страница с ошибкой 500, и в файле журнала nginx у меня есть эта ошибка:
the rewritten URI has a zero length
Что мне не хватает в этой конф?
Посмотрим на вашу строку перезаписи:
rewrite /tomcatapi/(.*) $1 break;
Вы берете биту в скобках (т.е. все, что после /tomcatapi/
), который присваивается $1
, и используя его как единственное содержимое вашего перезаписанного URI.
В вашем примере после /tomcatapi/
, поэтому перезапись оказывается пустой, и это то, о чем жалуется nginx.
Если вы измените правило перезаписи на
rewrite /tomcatapi/(.*) /$1 break;
тогда у вас всегда будет хотя бы /
в выводе перезаписи.