Я создал веб-приложение, которое будет прослушивать порт и обрабатывать HTTP-запросы. Например, если я запускаю его локально в 127.0.0.1:3000
. Я могу получить к нему доступ с помощью http://127.0.0.1:3000/путь/внутри/приложение
в моем браузере. Я хотел бы развернуть его на одном из моих серверов, который настроен с нгинкс
обрабатывать все входящие запросы (и TLS) и пересылать их в разные приложения (прослушивая http://127.0.0.1:ххх
). Обычно я предоставляю каждому приложению отдельный поддомен (например, доступ приложение1
с app1.example.com
и приложение2
с app2.example.com
), но было бы удобнее, если бы я мог использовать подпуть (например, доступ приложение1
с пример.com/app1
и приложение2
с пример.com/app2
). Но я не уверен, как его настроить.
Мой текущий файл конфигурации выглядит следующим образом. Предположим, что мое приложение слушает 127.0.0.1:3000
.
местоположение ^~ /app1 {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Хост $http_host;
прокси_перенаправление выключено;
прокси_пароль http://127.0.0.1:3000/;
}
Я хотел бы добиться следующего.
- Когда я получаю доступ
https://example.com/app1
, это будет эквивалентно доступу http://127.0.0.1:3000
.
- Когда я получаю доступ
https://example.com/app1/path/within/app
, это будет эквивалентно доступу http://127.0.0.1:3000/путь/внутри/приложение
.
Однако с вышеупомянутым конфигурационным файлом работает только первая часть. Если я получу доступ https://example.com/app1/путь
, мое приложение жалуется, что это http://127.0.0.1:3000//путь
к которым на самом деле получают доступ, и он не знает, как обрабатывать //дорожка
.
Я бы предпочел не изменять какую-либо часть моего приложения, чтобы оно могло работать независимо, если я решу предоставить ему поддомен в будущем, и ожидаю исправления только с изменением файла конфигурации nginx, если это возможно. Кроме того, я знаю о проблеме, заключающейся в том, что любые интерактивные ссылки, сгенерированные приложением, также должны обрабатывать подпути, но это приложение достаточно простое, чтобы это не было проблемой.
Спасибо.