Angularjs 如何使用nginx提高nodejs性能

Angularjs 如何使用nginx提高nodejs性能,angularjs,node.js,nginx,Angularjs,Node.js,Nginx,我正在学习如何自己构建web前端和后端。 我读过一些关于使用nginx提高nodejs性能的博客。 但是我还有一些问题,我希望有人能帮助我 服务静态文件 1.我想建立一个纯粹的文档网站(如)。我的计划是使用angularjs。每次用户单击一个项目时,使用ajax加载特定的html资源。据我所知,Nginx可以很好地处理静态文件。我可以在这里使用Nginx和nodejs后端吗 2.建立正常网络,包括登录、注销、会话等。有人说,由nodejs自己提供和呈现页面是非常糟糕的。但是,我应该检查每个用户请

我正在学习如何自己构建web前端和后端。
我读过一些关于使用nginx提高nodejs性能的博客。
但是我还有一些问题,我希望有人能帮助我

服务静态文件 1.我想建立一个纯粹的文档网站(如)。我的计划是使用angularjs。每次用户单击一个项目时,使用ajax加载特定的html资源。据我所知,Nginx可以很好地处理静态文件。我可以在这里使用Nginx和nodejs后端吗

2.建立正常网络,包括登录、注销、会话等。有人说,由nodejs自己提供和呈现页面是非常糟糕的。但是,我应该检查每个用户请求中的会话。nodejs是否可能先检查会话,然后检查nginx响应html文件?
(前端也是角形的。) 比如

app.get('/about', function (req, res)
{
    response.writeHeader(200, {"Content-Type": "text/html"});  
    response.write(html);  // serve by nginx
    response.end();  
});
我会直说的

更好的做法是将文件夹放在有公用文件夹的nodejs应用程序的地方,并告诉nginx只查看公用文件夹中的一些扩展,但查看传递给nodejs的其他请求

您可以使用nginx主机文件:

server {
    listen 80;

    server_name yourdomain.com www.yourdomain.com;

    index index.html index.htm;

    location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|pdf|txt|tar|wav|bmp|rtf|js|flv|swf|html|htm|mp3)$ {
        root /home/yourdomain/public; # or any path to public folder
        expires 30d;
        add_header Pragma public;
        add_header Cache-Control "public";
    }

    # all other requests goes to :8000
    location / {
        log_not_found off;
        access_log off;
        proxy_pass http://127.0.0.1:8000;
        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;
    }
}
具有与此类似的文件夹结构


告诉nginx这样做也是一样:location/{try_files$uri$uri.html$uri/$uri.php;index.index.html index.htm index.php;}对不起,@num8er。我更新了示例代码。是的,很好。但我希望你在我的回答中用了这个例子。关于会话:只是req.session中的一个对象。所以,您可以使用中间件来检查req.session是否存在用户会话或角色,如果可以,则调用next()。最好在“中间件expressjs”中观看Youtube@num8er,非常感谢!我会试试的,我只做api,使用auth,deauth路由,在那里我可以得到json中的令牌。在angular、react等应用程序发出的每个请求中,我都会将令牌放在参数或标头中,并在后端检查令牌后面是否有数据,然后如果没有问题,则将请求传递给路由处理程序,否则只需使用unauthorized.so server.js在您的示例中侦听8000端口,对吗@鄭元傑 NodeJS侦听8000(在大多数情况下为1337)或您想要的任何端口,nginx侦听80,代理传递到您的节点应用程序端口