Итак, я обращался к своему серверу в domain.com:3333
но просто переключил его на domain.com/nodeapp
используя восходящий поток и прокси-сервер в моей конфигурации nginx. Перенаправление работает нормально, но теперь ссылки на статические файлы, используемые моим index.html (/styles/style.css & socket.io/socket.io.ks), не работают, и все, что отображается, является необработанным html.
Из index.js
app.get('/nodeapp', function(req,res){
res.sendFile(path.join(__dirname, '/views', 'index.html'));
});
app.use('/styles', express.static(path.join(__dirname, '/views/styles')));
Из index.html
<link rel="stylesheet" type="text/css" href="styles/style.css">
<script src="socket.io/socket.io.js"></script>
Из ... / nginx / sites-enabled / default
upstream nodeapp{
server localhost:3333 fail_timeout=0;
}
server{
....
location /nodeapp{
proxy_pass http://nodeapp;
}
....
}
Как мне восстановить ссылку?
Обратите внимание, что в моем index.js перед переключателем первая показанная строка была app.get('/', function(req,res){
Итак, это было довольно сложно понять, но до боли просто.
location /socket.io {
proxy_pass http://nodeapp;
}
location /styles {
proxy_pass http://nodeapp;
}
Пути, на которые ссылается index.html, должны быть установлены как местоположения в конфиге nginx, что prox_pass ведет к серверу узла.
Добавьте завершающую косую черту к своему местоположению и к цели proxy_pass и оставьте исходный index.js нетронутым. Однако ваши ссылки должны указывать на / nodeapp / {something} в index.html.
location /nodeapp/ {
proxy_pass http://nodeapp/;
}