nginxconfiguration中proxy_set_header的不同字段

我对nginxconfiguration很陌生。 我想使用它设置虚拟主机,以便我可以在同一台服务器上的不同端口上运行不同的节点JS应用程序,但它们在不同的子域中提供服务。 经过一番search,我发现了一个post在stackoverflow和它适合我想要做的。 其中,代码涉及以下位置块

location / { │ proxy_set_header X-Real-IP $remote_addr; │ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; │ proxy_set_header Host $http_host; │ proxy_set_header X-NginX-Proxy true; │ │ proxy_pass http://otherapp/; │ proxy_redirect off; │ } 

现在我想明白脚本的作用。 我看了各种各样的人发布的nginx文档和注释,并理解了一些东西。 在我看来,即使我删除了上面代码中的所有proxy_set_header行,除了proxy_pass ,我想要的可能也会起作用。 我想了解以上代码中的不同字段在做什么。 可能它们对于我目前没有意识到的一些事物是有用的。 是否有一个地方列出了proxy_set_header模块的所有字段并解释它们?

谢谢。

从本质上讲,它所做的是向服务器提供信息。 为了:

  1. X-Real-IP – 你正在代理的服务器将把nginx代理系统视为任何types的应用程序逻辑中的“客户端IP”,或者将它logging下来,因为nginx服务是TCP连接的源。 这通常是毫无价值的,特别是在日志中。 后端服务器可以使用此标题而不是其正常的客户端IP来进行日志logging或其他需要客户端IP的使用。
  2. X-Forwarded-For – 这是一个标准的ISH头,它类似于X-Real-IP ,但为连接传递的整个代理链提供附加的连接源条目。 从后端服务器parsing和使用可能会更令人头痛,因为可能有多个条目。
  3. Host – 这是最有可能为您的应用程序的重要。 通常情况下,nginx向后台服务器发送的请求将在其Host头中包含您configuration的地址(在本例中为http://otherapp/ )。 如果代理某些基于名称的虚拟主机,或者根据收到的主机头生成链接,这可能不是所期望的。 这个configuration使得客户端发送nginx的Host头被发送到后端(相当于Apache的ProxyPreserveHost )。
  4. X-NginX-Proxy – 所有这些都是作为代理使用的标记。 在大多数情况下可能没有用。