Перенаправити підпуть до зовнішнього хоста за допомогою Nginx


14

Мені потрібно створити досить просту карту в 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

Що мені не вистачає в цій конфлікті?

Відповіді:


13

Давайте розглянемо ваш рядок перезапису:

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

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

У вашому прикладі після цього нічого немає /tomcatapi/, тому перезапис закінчується порожнім, і ось що стогне nginx.

Якщо ви змінили правило перезапису на

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

тоді ви завжди будете в кінцевому рахунку принаймні /у переписуванні виводу.


Дякую за Вашу відповідь, я все-таки додав "/", але тепер доступ до URL-адреси браузер застряг у завантажувальному стані, і у файлі журналу я бачу зараз іншу помилку: вгору надсилається недійсне заголовок HTTP / 1.0 під час зчитування заголовка відповіді з upstream
carlo.polisini

Що кажуть журнали на сервері tomcat?
Flup

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