Express может обслуживать статические локальные файлы, например:
app.use(express.static('public', STATIC_OPTIONS));
app.get('*', pageRendering);
Когда я перехожу к localhost/
, pageRendering
выполняет свою работу.
Теперь я хочу обслуживать статические файлы с другого сервера, поэтому меняю код на этот:
app.use(proxy(url.parse('pathToRemoteServer')));
app.get('*', pageRendering);
Когда я перехожу к localhost/
, возникает конфликт, и pageRendering
не может выполнять свою работу.
Я не хочу переходить на app.use('/public', proxy(url.parse('pathToRemoteServer')));
, чтобы избежать конфликта.
Есть ли способ исправить это?
Обновлено: отсутствует var proxy = require('proxy-middleware');
что значит "есть конфликт"?
@AlexWayne: конфликтует с путем '/', мне пришлось бы изменить его на app.use ('/ public',
Где-то вы ДОЛЖНЫ определить, какие URL-адреса должны обслуживаться другим сервером, а какие - сервером Express. Прямо сейчас похоже, что вы отправляете все URL-адреса на свой прокси. Простой способ; для этого нужно указать префикс пути, такой как /static
, и разрешить прокси-серверу только те.
@ jfriend00: Я сделал это с /public
. Но есть ли другой способ?
Ну, какой-то фрагмент кода должен уметь определять, принадлежит ли данный запрос прокси-серверу или нет. Есть другие способы узнать это, кроме префикса URL-адреса (например, по расширению или имени файла в URL-адресе) или с помощью другого домена для статических запросов.
Лучше всего использовать для этого Nginx!
что такое «прокси» в этом контексте? Модуль что ли написал? Вы можете уточнить? Кроме того, это кажется очень хорошим вариантом использования веб-сервера в качестве обратного прокси, вместо того, чтобы загромождать логику вашего узла.