首页 > 解决方案 > 如何将 NGINX 设置为按标头转发?

问题描述

如何检测请求中的(a)特定标头,然后根据所述标头转发请求?

假设我有一个请求的标头有:

X-Application: 'eCommerce'

然后我想将其转发到,127.0.0.1:3000同时将所有其他流量保留到127.0.0.1:8000.

标签: nginx

解决方案


任何 HTTP 标头的值都可以通过$http_<header>nginx 变量获得。我认为解决这个问题的最简单方法是使用map块:

map $http_x_application $backend {
    eCommerce    127.0.0.1:3000;
    default      127.0.0.1:8000;
}

然后proxy_pass以下列方式使用您的指令:

proxy_pass http://$backend;

请注意,map块应在块http外的上下文中定义server


推荐阅读