`
sillycat
  • 浏览: 2539904 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Nginx Routing Based on Headers

 
阅读更多

Nginx Routing Based on Headers

Today we meet one requirement that we need to parse and check the request header to see which server we prefer to routing to.
At first, I thought that nginx can not do that, only my lovely ha-proxy can do that.

Finally, I found that there is just lack of document to see how to do the header based routing for nginx.

I tried these configurations, it works, but I am not sure if it is the best practice.
upstream

contentcenter2 {

 ip_hash; server localhost:8201;   

}    

upstream

sillycat {        

 ip_hash;         server localhost:9000;    

}

map $http_x_header $xheader {           

 default 1;           

 "ironwolf" 2;   

}

        location / {          

proxy_pass                  http://contentcenter$xheader;    

proxy_redirect              off;           

proxy_set_header            Host $host;           

proxy_set_header            X-Real-IP $remote_addr;          

proxy_set_header            X-Forwarded-For $proxy_add_x_forwarded_for;          

client_max_body_size        10m;          

client_body_buffer_size     128k;          

proxy_connect_timeout       90;          

proxy_send_timeout          90;          

proxy_read_timeout          90;          

proxy_buffer_size           4k;          

proxy_buffers               4 32k;          

proxy_busy_buffers_size     64k;          

proxy_temp_file_write_size  64k;

}

So, that is it.
If we plan to visit the contentcenter1 or contentcenter2, we just need to put the X-HEADER with value ironwolf or other value.


References:
http://nginx.org/en/docs/http/ngx_http_map_module.html
http://stackoverflow.com/questions/9168377/nginx-response-based-on-the-requested-header


分享到:
评论

相关推荐

    headers-more-nginx-module-0.34

    《headers_more_nginx_module_0.34:深入解析Nginx扩展模块的增强功能》 在Web服务器领域,Nginx以其高性能、高并发能力而广受赞誉。而headers_more_nginx_module作为Nginx的一个扩展模块,进一步提升了其在处理...

    headers-more-nginx-module-0.33.rar

    nginx扩展工具,nginx的headers_more模块用于 添加、修改或清除 请求/响应头,该模块不是nginx自带的,默认不包含该模块,需要另外安装。幸运的是openresty默认包含了该模块,可以直接使用。 该模块主要有4个指令...

    headers-more-nginx-module-0.37.tar

    headers-more-nginx-module-0.37.tar

    教你怎么用Nginx往request的header中添加新字段

    结合提供的文件名,我们可以推断,`2nginx response.png`可能展示了Nginx添加自定义响应头的结果,`1request header中添加apiversion.png`可能描绘了在请求头中添加`apiversion`字段的过程,而`Nginx居然还能实现...

    headers-more-nginx-module-0.30.tar.gz

    标题中的"headers-more-nginx-module-0.30.tar.gz"是一个开源软件模块的压缩包,主要用于扩展Nginx服务器的功能。Nginx是一款高性能、轻量级的Web服务器/反向代理服务器,广泛应用于互联网服务。这个特定的模块,...

    linux安装nginx,附带依赖包openssl、pcre、zlib

    为了在Linux上成功安装Nginx,我们需要首先安装几个依赖库,包括PCRE(Perl Compatible Regular Expressions)、zlib(用于数据压缩)以及openssl(用于加密和安全通信)。以下是对每个步骤的详细说明: 1. **安装...

    headers-more-nginx-module:设置,添加和清除NGINX http服务器中的任意输出头

    本文档介绍了2017年11月3日发布的headers-more-nginx-module 。 概要 # set the Server output header more_set_headers 'Server: my-server' ; # set and clear output headers location /bar { more_set_...

    详解Nginx服务器中HTTP Headers相关的模块配置使用

    主要介绍了详解Nginx服务器中HTTP Headers相关的模块配置使用,包括ngx_http_headers_module与它的增强版ngx_headers_more的配置使用讲解,需要的朋友可以参考下

    Openresty_For_Windows_1.7.10.zip

    headers-more-nginx-module rds-json-nginx-module nginx-http-concat-module redis2-nginx-module and these C module for Lua: 以及这些用于 Lua 的 C 模块: lua-cjson lua-redis-parser lua-rds-parser

    headers-more-nginx-module-0.33.zip

    《Nginx模块详解:headers_more_nginx_module的深度剖析》 在Web服务器领域,Nginx以其高效、稳定的特点深受广大开发者的喜爱。而为了满足更多特定需求,Nginx支持通过各种模块进行功能扩展,其中headers_more_...

    How To Install nginx on CentOS 6 with yum

    "安装 Nginx 服务器 trên CentOS 6 使用 yum" Nginx 是一个高性能的 Web 服务器软件,一般来说,它比 Apache 软件更加灵活和轻量级。在本教程中,我们将指导您如何在 CentOS 6 上使用 yum 安装 Nginx 服务器。 ...

    ngx_security_headers:NGINX模块,用于发送安全头

    ngx_security_headers 此NGINX模块以正确的方式(c)添加了安全标头,并删除了不安全的标头。概要http { security_headers on; ...} 运行curl -IL https://example.com/将产生添加的安全标头: ...

    Nginx+RTMP集群解决方案

    ### Nginx+RTMP直播服务器集群解决方案 #### 一、概述 随着互联网技术的发展,实时音视频传输的需求越来越广泛,特别是在直播领域。Nginx+RTMP是一种常见的解决方案,它利用Nginx服务器和RTMP协议实现了稳定、高效...

    centos8 nginx1.20.1 与nginx配置文件

    ssl_prefer_server_ciphers on; ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH'; location / { root /var/www/html; # 设置网站根目录 index index.html index.htm; } } ``` 不要忘记在HTTP...

    编译nginx需要的库.zip

    这里提供的压缩包文件包含了编译Nginx时必要的几个组件:`openssl`, `pcre`, `zlib`, `headers-more-nginx-module` 和 `nginx-upload-module`。 首先,我们来看`openssl`。OpenSSL是一个强大的安全套接字层密码库,...

    window服务器 nginx1.11.3

    window服务器版本的nginx,常规版本受限window并发量限制,下载资源后,解压缩,复制nginx-win.conf 命名为 nginx.conf, 运行nginx_basic.exe,相关配置文件根据自己需要个性化定制,自己亲测使用好一段时间。

    windows 注册Nginx为服务,自动重启

    reload-on-notification on; ``` 最后,确保Nginx服务配置正确无误后,可以使用`nginx.exe -s reload`命令重新加载配置,或通过服务控制来启动或停止服务。 总结,通过以上步骤,我们可以成功地在Windows上安装...

    Windows版nginx去掉header中server后面的信息(nginx版本1.21.1)

    Windows版nginx去掉header中server后面的信息(nginx版本1.21.1) 使用方法: 1、关闭nginx服务 2、将新的nginx.exe替换原有的exe文件 3、重启nginx服务

    lua-nginx-module-0.10.13

    Lua-Nginx-Module,简称lua-nginx-module,是Nginx服务器的一个重要扩展模块,它将强大的Lua脚本语言集成到Nginx中,允许用户在Nginx配置文件中直接编写Lua代码,极大地增强了Nginx的功能性和灵活性。版本0.10.13是...

Global site tag (gtag.js) - Google Analytics