nginx以upstream 分组的方式实现http反向代理

nginx反向代理高级应用

nginx可以将客户的的请求转发至后端服务器但是无法转至特定一组的服务器,而且不能对后端服务器提供响应的服务器状态检测,但是Nginx可以基于ngx_http_upstream_module模块提供服务器分组、转发、权重分配、状态检测、调度算法等高级功能
upstream_module的官方文档:http://nginx.org/en/docs/http/ngx_http_upstream_module.html

upstream

Syntax: upstream name { ... }
Default:    —
Context:    http

定义一个服务器组,服务器可以监听在默认的端口上,服务器所监听的端口和unix-socket可以混合使用
Example:

upstream backend {
    server backend1.example.com weight=5;
    server 127.0.0.1:8080       max_fails=3 fail_timeout=30s;
    server unix:/tmp/backend3;

    server backup1.example.com  backup;
}

在默认的情况下,用户请求会在所的服务器中轮询。在上面的例子中,如果有7个请求到达,那么第一个服务器会接受5个请求,第二服务接受一个请求,第三个服务器接受一个请求,第4台服务器做备用服务器不接受请求。如果一个请求无法被上面3台服务器所响应,则会由最后一台服务器响应。

server

Syntax: server address [parameters];
Default:    —
Context:    upstream

定义服务器地址和相关的参数。地址可以是域名或者ip地址,加上一个端口,或者是unix-sock文件,使用unix-sock时需要在前面加上"unix:"字段。如果端口没有指定,那么将使用80端口。如果时域名将会被解析成ip地址。
paramerters定义:

weight=number #设置权重,默认为1。
max_conns=number  #给当前server设置大活动链接数,默认为0表示没有限制。
max_fails=number  #对后端服务器连续监测失败多少次就标记为不可用。
fail_timeout=time #对后端服务器的单次监测超时时间,默认为10秒。
backup  #设置为备份服务器,当所有服务器不可用时将重新启用次服务器。
down ?  #标记为down状态。
resolve #当server定义的是主机名的时候,当A记录发生变化会自动应用新IP而不用重启Nginx

hash KEY consistent;

基于指定key做hash计算,使用consistent参数,将使用ketama一致性hash算法,适用于后端是Cache服务器 (如varnish)时使用,consistent定义使用一致性hash运算,一致性hash基于取模运算。
所谓取模运算,就是计算两个数相除之后的余数,比如10%7=3, 7%4=3

hash $request_uri consistent; #基于用户请求的uri做hash

ip hash;

源地址hash调度方法,基于的客户端的remote_addr(源地址)做hash计算,以实现会话保持

least_conn;

少连接调度算法,优先将客户端请求调度到当前连接少的后端服务器


以upstream 分组的方式实现http反向代理

nginx为反向代理服务器,2台apache为后端服务器主机

主机 IP
nginx 172.20.27.10
apahce1 172.20.27.20
apache2 172.20.27.21

反向代理端配置

1.在nginx配置文件中定义upstream分组,定义在http字段中

[[email protected] ~]# vim /apps/nginx/conf/nginx.conf
http {
        ......
    upstream app {
        server 172.20.27.21:80 weight=1 max_fails=3 fail_timeout=5s;
        server 172.20.27.20:80 weight=1 max_fails=3 fail_timeout=5s;
        #ip_hash;
        #根据源地址做hash,同一个地址来的请求发往后台同一台服务器
        #least_conn;
        #最少连接调度算法,将用户的请求发往后台连接数较少的服务器上
        #hash $request_uri connsistent;
        #当用户第一次访问某uri时,服务器对uri做hash,然后将其保存至缓存服务器,当有用户再次访问此uri时将直接访问缓存服务器
    } 

}

2.在配置文件中调用分组

[[email protected] ~]# vim /apps/nginx/conf/servers/vs.conf

server {
    server_name www.mylinuxops.com;
    listen 80;
    location /app {
        proxy_pass http://app;
        proxy_hide_header ETag;
        proxy_set_header X-Forwardde-For $remote_addr;
        #proxy_cache proxycache;
        #proxy_cache_key $request_uri;
        #proxy_cache_valid 200 302 301 307 1h;
        #proxy_cache_valid any 1m;
        #此处不开启缓存否则无法测试出是否轮询调度
    }
}

http服务器配置

1.安装httpd

yum install httpd -y

2.分别为每台http服务器创建测试页面
apache1

[[email protected] ~]# mkdir /var/www/html/app
[[email protected] ~]# echo 172.20.27.20 > /var/www/html/app/index.html

apache2

[[email protected] ~]# mkdir /var/www/html/app
[[email protected] ~]# echo 172.20.27.21 > /var/www/html/app/index.html

测试

对站点进行访问测试

[[email protected] ~]# curl -L www.mylinuxops.com/app/
172.20.27.20
[[email protected] ~]# curl -L www.mylinuxops.com/app/
172.20.27.21
[[email protected] ~]# curl -L www.mylinuxops.com/app/
172.20.27.20
[[email protected] ~]# curl -L www.mylinuxops.com/app/
172.20.27.21

原文地址:https://blog.51cto.com/11886307/2403935

时间: 2024-10-16 08:25:17

nginx以upstream 分组的方式实现http反向代理的相关文章

nginx以upstream分组的方式实现tcp反向代理

nginx以upstream分组的方式实现tcp反向代理 nginx在1.9版本开始支持tcp模式的负载均衡,在1.9.13版本开始支持udp协议的负载均衡,udp主要用于DNS的域名解析,其配置方式和指令和http代理类似,其基于ngx_steam_proxy_module模块实现tcp负载,另外基于ngx_stream_upstream_module实现后端服务器的分组转发.权重分配.状态监测.调度算法等高级功能官方文档的example: worker_processes auto; err

Nginx配置二级目录/路径 映射不同的反向代理和规避IP+端口访问

   当配置Nginx来映射不同的服务器 可以通过二级路径来反向代理 来解决一个外网端口实现多个服务访问. 配置如下: server { listen 80; server_name demo.domain.com; #通过访问service二级目录来访问后台 location /service/ { #DemoBackend1后面的斜杠是一个关键,没有斜杠的话就会传递service到后端节点导致404 proxy_pass http://backend1/; proxy_redirect of

nginx之安装、多虚拟主机、反向代理和负载均衡

一.web服务器与web框架 1.web服务器简介 Web 网络服务是一种被动访问的服务程序,即只有接收到互联网中其他主机发出的请求后才会响应,最终用于提供服务程序的Web服务器会通过 HTTP(超文本传输协议)或 HTTPS(安全超文本传输协议)把请求的内容传送给用户. 目前能够提供 Web 网络服务的程序有 IIS.Nginx 和 Apache 等.其中,IIS(Internet Information Services,互联网信息服务)是Windows系统中默认的Web服务程序Nginx

nginx做nodejs(express等通用)反向代理

首先配置环境nginx+nodejs...(没有请看我的其他文章,此处不重复) cd 到nginx的site-available目录 ubuntu的在 cd /etc/nginx/site-available/ 创建一个server文件 sudo touch testServer 然后可以copy下面的代码进去了(勤劳的coder可以手写一遍的哦) http{ keepalive 65; #超时 gzip on; #是否开启压缩模块 gzip_comp_level 6; #压缩比例 1-9 gz

Nginx 常用命令并实现最基本的反向代理

nginx 命令 测试配置文件格式是否正确:$ nginx -t 启动:nginx 重启:nginx -s reload 获取nginx进程号: ps -ef|grep nginx 停止进程(master): Kill -TERM 22649(进程号) 关闭: nginx -s quit (优雅停止) 关闭: nginx -s stop (立即停止) nginx 反向代理(Mac os下) 例如,有两个目录,一个目录下是前端html文件,服务监听的端口是8001:另一个是后端nodejs文件,服

nginx之upstream集中分配方式

一.分配方式 1.轮询方式(默认) upstream realserver {     server 192.168.1.1;     server 192.168.1.2; } 每一个请求会按照时间顺序分配到后端不同的服务器上,假如有一台服务器宕机,则会自动剔除该服务器. 2.weight权重 upstream realserver {         server 192.168.1.1 weight=5;         server 192.168.1.2 weight=8; } 根据后

nginx之 nginx-1.9.7 + tomcat-8.5.15 反向代理+应用负载均衡 安装配置

环境说明:nginx 反向代理服务器 ip 为: 10.219.24.26tomcat1 应用服务器 ip 为: 10.219.24.21tomcat3 应用服务器 ip 为: 10.219.24.23os 环境为 :linux x86_64 参考连接: 为了节约劳动力,给出作者先前的完整连接,按照链接+下面的流程,即可搭建成功!nginx之 nginx-1.9.7 编译安装.理论简介: http://blog.csdn.net/zhang123456456/article/details/73

Nginx简介及用户认证、访问控制和反向代理配置

Nginx 是一个很强大的高性能Web和反向代理服务器及及电子邮件(IMAP/POP3)代理服务器,由俄罗斯程序员设计师Igor Syaoev所开发,官方网站:http://nginx.org/  特点是占有内存少.并发能力强. Nginx配置文件及目录简介: - /usr/local/nginx/                                                           安装目录 - /usr/local/nginx/conf/nginx.conf  

Nginx 反向代理 负载均衡 虚拟主机配置

通过本章你将学会利用Nginx配置多台虚拟主机,清楚代理服务器的作用,区分正向代理和反向代理的区别,搭建使用Nginx反向搭理和负载均衡,了解Nginx常用配置的说明.即学即用,你还在等什么?一睹为快先了解Nginx的三大功能Nginx 可以作为一台http服务器.可以做网站静态服务器,比如图片服务器,高效,减轻服务器压力.同时它也支持https服务.Nginx 可以配置多台虚拟主机.可以实现在一台服务器虚拟出多个网站效果,省钱.Nginx 最重要的是反向代理,负载均衡.在服务器集群中,Ngin