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


13

Мне нужно создать довольно простую карту в Nginx, перенаправив подпуть на другой сервер, который находится в той же подсети.

  • Nginx сервер: 192.168.0.2
  • Сервер Tomcat: 192.168.0.3:8443

Я пытался положить это в разделе сервера

    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

Чего мне не хватает в этой конф?

Ответы:


12

Давайте посмотрим на вашу строку переписать:

rewrite /tomcatapi/(.*) $1 break;

Вы берете бит в скобках (т. Е. Все после /tomcatapi/), который присваивается $1, и используете его в качестве единственного содержимого вашего переписанного URI.

В вашем примере ничего не происходит после этого /tomcatapi/, поэтому перезапись заканчивается пустым, и это то, о чем стонет nginx.

Если вы измените правило перезаписи на

rewrite /tomcatapi/(.*) /$1 break;

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


Спасибо за ваш ответ, в любом случае я добавил «/», но теперь при доступе к URL-адресу браузер застрял в состоянии загрузки, и в файле журнала я вижу теперь другую ошибку: апстрим не отправил действительный заголовок HTTP / 1.0 при чтении заголовка ответа из апстрима
carlo.polisini

Что говорят журналы на вашем сервере Tomcat?
Flup

Я обнаружил ошибку, ошибка была в том, что приложение было доступно только по https, а не по http! Синтаксис был сразу после исправления, просто заменил http на https, чтобы он заработал.
carlo.polisini
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.