Nginx添加一个描述所使用的上游服务器的响应头

我开始使用nginx与多个后端通过使用upstream指令。 我希望nginx添加一个响应头,描述哪个后端服务器被用来提供这个请求。 这样的事情会做:

 X-Backend-Server: localhost:8000 

我configuration了ip_hash作为负载平衡机制。

有没有办法configurationnginx来做到这一点?

谢谢!

我已经结束了在后端服务器设置标题(@MichaelHamptonbuild议),所以nginx转发这个请求到客户端。 正如我使用Grails,我已经添加了一个filter来添加响应头(基于这个答案https://stackoverflow.com/questions/6415452/grails-add-header-to-every-response

 import javax.servlet.* import org.apache.commons.logging.LogFactory class AddLocalHostnameToResponseFilter implements Filter { static final logger = LogFactory.getLog(this) String hostname void init(FilterConfig config) { try { this.hostname = InetAddress.localHost.hostName ?: 'unknown' } catch (Exception e) { logger.error("error", e) this.hostname = 'unknown' } } void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) { response.setHeader('X-Backend', this.hostname) chain.doFilter(request, response) } void destroy() { } } 

并将其添加到web.xml

 <filter> <filter-name>addLocalHostnameToResponseFilter</filter-name> <filter-class>AddLocalHostnameToResponseFilter</filter-class> </filter> <filter-mapping> <filter-name>addLocalHostnameToResponseFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> 

希望这可以帮助。