Node.js Express NGINX:静态文件路径因名称间隔的 proxy_pass 而中断

Node.js Express NGINX:静态文件路径因名称间隔的 proxy_pass 而中断

因此,我访问了我的服务器,domain.com:3333但只是在我的 nginx 配置中将其切换为domain.com/nodeapp使用上游和代理传递。重定向工作正常,但现在指向正在使用的静态文件的链接我的 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){

答案1

所以,这有点难以弄清楚,但又非常简单。

location /socket.io {
    proxy_pass http://nodeapp;
}

location /styles {
    proxy_pass http://nodeapp;
}

index.html 链接到的路径必须设置为 nginx conf 中 prox_pass 到节点服务器的位置。

答案2

在您的位置和 proxy_pass 目标后面添加一个斜杠,并保持原始 index.js 不变。但是您的链接应指向 index.html 中的 /nodeapp/{something}。

location /nodeapp/ {
    proxy_pass http://nodeapp/;
}

相关内容