详解使用Go添加Nginx代理的方法示例
简介
Nginx是一个高性能的HTTP服务器和反向代理服务器.
最常用的两个功能是反向代理和负载均衡.
反向代理
反向代理是正向代理的反面.
普通的代理服务器是需要用户主动去设置的,用户在自己的电脑上设置并连接代理服务器,
从而可以隐藏自己的IP,使得应用服务器不知道客户端的IP地址.
而反向代理是作为应用服务器的代理,安装在服务器上.客户端实际上访问的反向代理服务器,
反向代理服务器再去访问实际的应用服务器,然后将获取到的响应传送给客户端.
使用Nginx配置反向代理非常简单,基础配置如下:
upstreamweb{ server127.0.0.1:8081; } server{ listen80; server_nameweb.coolcat.com; location/{ proxy_set_headerHost$http_host; proxy_set_headerX-Forwarded-Host$http_host; proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for; proxy_set_headerX-Real-IP$remote_addr; client_max_body_size5m; proxy_passhttp://web; } }
上面的配置文件中设置了一个域名web.coolcat.com,
对这个域名的所有请求都会转发到http://web上.
通过配置upstream,我们可以发现,实际上的流量都被转发到了
127.0.0.1:8081上了.
如此一来,就实现了反向代理.
负载均衡
负载均衡和反向代理是分不开的,负载均衡通常都是基于反向代理做的.
所谓的负载均衡,指的是将多个请求转发到不同的后端服务器上.
upstreamweb{ server127.0.0.1:8081; }
在上面的反向代理配置中,只设置了一个后端服务器地址,
如果再添加几个,就实现了最简单的负载均衡了.
轮询
轮询策略按顺序分配请求.
upstreamweb{ server192.168.1.1:8081; server192.168.1.2:8081; }
加权轮询
加权策略按比例分配请求.
upstreamweb{ server192.168.1.1:8081weight=4; server192.168.1.2:8081weight=6; }
上面的两个服务器的访问概率就是四六开.
最少连接
最少连接将请求分配给当前连接数最少的服务器.
upstreamweb{ least_conn; server192.168.1.1:8081; server192.168.1.2:8081; }
ip_hash
来自同一个IP的连接都会分配给同一个服务器,通常用于会话保持.
upstreamweb{ ip_hash; server192.168.1.1:8081; server192.168.1.2:8081; }
通用hash
使用hash自定义要计算的key.示例中使用请求地址.
可以选择consistent参数可以指定使用一致性哈希算法.
upstreamweb{ hash$request_uri; #hash$request_uriconsistent; server192.168.1.1:8081; server192.168.1.2:8081; }
参考:
UsingnginxasHTTPloadbalancer
Modulengx_http_upstream_module
总结
Nginx是很常用的代理服务器,它的功能非常强大,性能也很好.
更多的资料请参考官方文档.
当前部分的代码
作为版本v0.14.0
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。