我试图使用nginx作为代理服务器,并在显示privatestatic文件之前使用express+passport来验证用户。
我现在只用http工作(在开发阶段)。我发现 Express+Nginx。不能提供静态文件 并从中学到了不少东西,但我的代码却不能用。
我的nginx设置。
http {
server {
listen 80;
root /var/www/html;
location /private {
proxy_pass http://myIP4:3000/private; #3000 is the port for express server
proxy_method GET;
}
}
}
我的快递(护照)代码是这样的
...
...
#simplified login, real code is longer
app.use('/login', passport.authenticated('local'),function(req, res){
res.redirect('/private/index.html'); #if authentication is OK
});
app.use(function(req,res,next){
if ((req.url !== '/login') && (!req.isAuthenticated()) ){ #not the login page and not authentication failed
res.redirect(301,'http://myIP4/login.html');
}
else {#if authenticated
console.log('authentication OK');
express.static("/var/www/html/private/");
}
});
我的登录API工作正常,当我提交用户名密码后,我可以看到登录成功。但是重定向有一些问题:浏览器不能显示目标文件:privateindex.html(登录后)和privatetest.html(登录成功后直接在浏览器中输入完整的url)。
浏览器显示。
Cannot GET /private/index.html
浏览器的Debug显示。
Content Security Policy: The page’s settings blocked the loading of a resource at http://myIP4/favicon.ico (“default-src”).
我找到了一些关于设置Content_Secrity_policy的帖子,但我尝试了一下,还是不能让它工作。
谢谢你的时间帮助
我通过在express中修改解决了这个问题。
从:
express.static("/var/www/html/private/");
到。
app.use ('/private',express.static('/var/www/html/private'));
现在它的工作。