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

Перенаправить подпуть на внешний хост с Nginx

Мне нужно создать довольно простую карту в 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;

тогда у вас всегда будет хотя бы / в выводе перезаписи.