Я пытаюсь настроить новый узел вместе с моим предыдущим приложением PHP.
] www.xyz.com
. Он обслуживается с помощью nginx. Я хочу серверировать приложение NodeJs по ссылке
www.xyz.com/nodeApp
Мой подход заключался в том, чтобы проксировать все запросы, сделанные на www.xyz/nodeApp
, на порт 8142, где сервер узла будет
Я добавил следующую конфигурацию прокси в файл nginx на www.xyz.com
.
location ~ ^/nodeApp(.*)$ {
proxy_http_version 1.1;
proxy_pass_request_body on;
proxy_set_header Host $host;
proxy_set_header Scheme $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8142$1$is_args$args;
proxy_buffering off;
}
При попадании в www.xyz.com/nodeApp/
, все работает. Узловой сервер принимает запрос и обслуживает файлы css
и js
по ссылке www.xyz.com/nodeApp/app.js
и т. Д.
При нажатии www.xyz.com/nodeApp
он не работает.
Узловой сервер принимает запрос и правильно обслуживает страницу html
, но файлы css
и js
обслуживаются по ссылке www.xyz.com/app .js
и т. д. Итак, приложение ломается.
Где я ошибаюсь?
var express = require("express");
var app = express();
app.use(express.static(__dirname + '/build'));
var port = process.env.PORT || 8142;
app.listen(port, function() {
console.log("Listening on " + port);
});
Вам следует упростить конфигурацию:
location /nodeApp/ {
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header Scheme $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8142/;
proxy_buffering off;
}
В этом случае nginx позаботится о завершающей косой черте. См. http://nginx.org/r/location
Если местоположение определяется строкой префикса, которая заканчивается косой чертой, и запросы обрабатываются одним из
proxy_pass
, [ ...], затем выполняется специальная обработка. В ответ на запрос с URI, равным этой строке, но без завершающей косой черты , постоянное перенаправление с кодом 301 будет возвращено на запрошенный URI с добавленной косой чертой.
Также существует нет необходимости в переменных в proxy_pass
. Nginx заменит префикс / nodeApp /
на /
и автоматически добавит строки запроса.