Nginx可以作为HTTP服务器,也可以作为反向代理实现负载均衡功能。
正向代理
- 代理的是客户端,比如访问公司网络,需要VPN,这里VPN就是正向代理,代理客户端访问网络。
反向代理
- 代理的是服务器,比如代理服务器对外接受互联网上的客户端请求,然后将请求转发到内部网络的目标服务器。反向代理对外表现得就像目标服务器一样。
Nginx反向代理功能
- 有强大的基于域名和HTTP URL的路由转发功能
Nginx常见配置项解释
- worker_processes,处理用户请求的工作进程数
- events/worker_connections,每个工作进程允许同时最多建立多少个网络连接
- server/listen,HTTP服务器监听的端口号
- server/server_name,根据请求的Host字段与server_name进行匹配,匹配则被对应的server配置块处理,支持正则表达式
- server/location,每个location用于指定一个HTTP URL相对路径的处理规则
- server/location/proxy_pass,表示某个HTTP URL需要被谁处理
- http/upstream,表示一个服务池(服务实例集合)
服务池选择服务实例的负载均衡策略
- 轮询
- 加权轮询
- ip_hash
- least_conn,将请求转发给连接数最少的服务器实例
- url_hash
- fair,根据每个服务实例的响应时间、请求失败数、当前总请求量,综合选择一台最为空闲的服务器
使用Nginx作为业务服务器的反向代理有如下优势
- DNS服务器指向Nginx服务器,业务服务器网络地址切换无需配置DNS
- 在用户请求和业务服务器之间实现了负载均衡,更便于控制业务服务流量调度
- 对外只暴露一个公网IP地址,节约了有限的IP资源。Nginx与业务服务器之间通过内网通信。并保护了业务服务器。
- 增强了系统的可扩展性。
- 提高了业务服务器的可用性,任何一个业务服务实例挂掉,Nginx服务器可以将用户请求迁移到其他服务实例