Итак, я настраиваю виртуальный путь, когда указываю на приложение node.js в моем nginx.conf. соответствующий раздел выглядит так:
location /app {
rewrite /app/(.*) /$1 break;
proxy_pass http://localhost:3000;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
Отлично работает, кроме случаев, когда мое экспресс-приложение вызывает перенаправление.
Например, на устройстве dev работает порт nginx на порте 8080, поэтому URL-адрес корня приложения узла выглядит следующим образом:
http://localhost:8080/app
Когда я вызываю res.redirect('/app')
из экспресса, фактический редирект переходит на:
http://localhost/app
Поскольку на порту 80 ничего не работает, очевидно, это не удается. Я также не смог найти никаких свойств объекта запроса, которые позволили бы мне создать URL-адрес как абсолютный URL-адрес. Любые идеи, кроме жесткого кодирования или превращения его в переменную среды?
* edit: после еще нескольких копаний похоже, что в этом случае заголовок хоста определяется как «localhost», а если я подключаюсь непосредственно к приложению expres, определяется заголовок хоста как 'localhost: 3000' (где 3000 - это порт, который прослушивает приложение узла). Итак, как мне изменить приведенное выше отображение, чтобы включить порт сервера nginx?