我试图在端口3000上运行快速服务器。当我访问我的服务器的IP时,我能够加载html页面,但它没有似乎能够找到资产(具有我链接到的.js和.css文件 - 这与public
内的index.html位于同一目录中)。我在配置中遗漏了什么吗?
快速设置
const express = require('express');
const path = require('path');
const app = express();
const PORT = 3000;
app.use('*',
express.static(path.join(__dirname, '..', 'public', 'index.html')));
app.get('*', (req, res) => {
res.sendFile((path.join(__dirname, '..', 'public', 'index.html')));
});
app.listen(PORT, () => {
console.log(`Listening on http://localhost:${PORT}...`)
});
nginx设置
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/my_site/public;
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
try_files $uri $uri/ =404;
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
答案 0 :(得分:1)
在你的nginx配置中,
try_files $uri $uri/ =404;
意味着nginx将尝试在根文件夹中查找静态资源,然后在最后使用/
进行尝试,如果它还没有找到任何内容,则会发出404 (Not Found)
它永远不会到达proxy_pass
。
配置它的正确方法是这样的:
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/my_site/public;
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
try_files $uri $uri/ @nodejs;
}
location @nodejs {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
现在,它将在根文件夹中查找静态文件,然后将其传递给节点服务器。