2016-07-04 78 views

回答

1

两者都可以使用。你应该把它们放在最适合你的地方,并且取决于你的设置。

我假设你在一个或多个NodeJs应用程序服务器前有一个Nginx Web服务器?

如果是这样,那么是从Nginx返回的一些页面(例如静态页面)和一些来自节点(例如动态)?你有多个节点服务器吗?

这也取决于你在做什么与节点。让Nginx返回HTML,CSS和Javascript是非常常见的,然后使用该Javascript来对节点服务器进行AJAX调用以返回JSON数据。由于HTML文档需要CSP而不是远程JSON,因此在这种情况下从Node返回CSP头是没有意义的。

像HSTS有的头被设置为整个域的话,对我来说,这是有道理的,在Nginx的层设置它们,所以它们会影响所有的请求 - 由Nginx的服务的静态页面,并通过一个或多个节点服务器提供服务的动态网页。这也意味着如果您还设置了另一个节点服务器,则不必记住设置它们。

但是,如果为每个服务和/或请求返回不同的数据,则可以在Node中执行此操作。例如,如果您的Node应用程序需要根据请求的不同来设置不同的CORS头,那么在Nginx中执行此操作是没有意义的,并尝试根据请求URL和参数重复逻辑。

最终,您应该根据应用程序的设置决定去做它最有意义的位置,它最有可能被正确设置(所以当它不应该被设置为错误的值时它不会被设置,所以它也不会被设置在将来很容易忘记设置它)以及对其进行管理最有意义的地方(例如,有时比服务器配置更容易改变应用程序代码,反之亦然)。

+0

这是正确的。我在4节点服务器前有一个nginx服务器。一些页面由nginx返回,一些从节点返回。我发现如果我在快速配置cookie上的安全属性,它不会生效。 ''' app.enable('trust proxy'); app.use(会话({ 店:缓存, 秘密:config.session.secret, 饼干:{// 安全:真, //代理:真实, MAXAGE:config.session.maxAge } })); ''' 这是我在表达中设置的。 –

+0

听起来像是一个单独的问题,也许你没有在node/express中设置这个安全cookie。因此会为此提出一个单独的问题。 –

+0

会做谢谢。 –