在我目前的工作内容中,接触到Nginx的用处无外乎两点:

1. 反向代理,解决前端跨域的问题

  工作内容有门户的概念,就是将各个子系统集成到门户里,在门户里面访问,这样就很容易造成跨域的问题

  那么解决的办法就是给子系统配置Nginx,通过代理来访问,使门户和子系统在同一IP下。

  具体的配置如下:(实际上就是给真实地址配置个代理IP,proxy_pass?)

   主要看server节点内容

下面这个配置做到,访问192.168.40.240:80时,会返回http://192.168.110.102:8000的资源。 可以配置多个server...即多个子系统

     server {
listen ; # 监听端口为80
server_name localhost; # 服务器名
location / {
add_header Access-Control-Allow-Origin *;
proxy_set_header Host 192.168.40.240; # 代理服务器IP
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://192.168.110.102:8000; # 代理目标地址
proxy_intercept_errors on; #拦截异常
client_max_body_size 1000m;#文件上传大小 }

2. 负载均衡,这应该是最常见的软负载了吧。

   upstream mh_server {    # 集群名称
ip_hash; #解决session问题(建议子系统使用)
server 192.168.110.102: weight=; # 服务器1的访问地址, weight:分配权重。
server 192.168.40.158: weight=; # 服务器2的访问地址, weight:分配权重。
} server {
listen ;
server_name mh_server; # 集群名称
location / {
add_header Access-Control-Allow-Origin *;
proxy_set_header Host 192.168.40.158; # 集群服务器IP
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://mh_server; # 集群名称
  proxy_intercept_errors on; #拦截异常 }

这里需要注意的是ip_hash是负载均衡的一种资源分配策略,默认是轮训,这种ip_hash是跟前客户端ip进行哈希计算,导致请求会固定请求到一太固定的服务器上。

这样就解决了分布式部署的情况下session不共享的问题。

下面额外介绍一下Nginx支持的负载均衡调度算法方式:

weight轮询(默认):接收到的请求按照顺序逐一分配到不同的后端服务器,即使在使用过程中,某一台后端服务器宕机,nginx会自动将该服务器剔除出队列,请求受理情况不会受到任何影响。 这种方式下,可以给不同的后端服务器设置一个权重值(weight),用于调整不同的服务器上请求的分配率;权重数据越大,被分配到请求的几率越大;该权重值,主要是针对实际工作环境中不同的后端服务器硬件配置进行调整的。

ip_hash:每个请求按照发起客户端的ip的hash结果进行匹配,这样的算法下一个固定ip地址的客户端总会访问到同一个后端服务器,这也在一定程度上解决了集群部署环境下session共享的问题。

fair:智能调整调度算法,动态的根据后端服务器的请求处理到响应的时间进行均衡分配,响应时间短处理效率高的服务器分配到请求的概率高,响应时间长处理效率低的服务器分配到的请求少;结合了前两者的优点的一种调度算法。但是需要注意的是nginx默认不支持fair算法,如果要使用这种调度算法,请安装upstream_fair模块

url_hash:按照访问的url的hash结果分配请求,每个请求的url会指向后端固定的某个服务器,可以在nginx作为静态服务器的情况下提高缓存效率。同样要注意nginx默认不支持这种调度算法,要使用的话需要安装nginx的hash软件包

Nginx的使用(反向代理,负载均衡)的更多相关文章

  1. nginx 详解反向代理负载均衡

    什么是反向代理负载均衡 使用代理服务器可以将请求转发给内部的Web服务器,使用这种加速模式显然可以提升静态网页的访问速度.因此也可以考虑使用这种技术,让代理服务器将请求 均匀转发给多台内部Web服务器 ...

  2. Nginx特性验证-反向代理/负载均衡/页面缓存/URL重定向

    原文发表于cu:2016-08-25 参考文档: Nginx 反向代理.负载均衡.页面缓存.URL重写等:http://freeloda.blog.51cto.com/2033581/1288553 ...

  3. nginx实现http反向代理+负载均衡

    原理 反向代理:反向代理(reverse proxy)方式是指以代理来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客 ...

  4. nginx详解反向代理,负载均衡,LNMP架构上线动态网站

    1.nginx介绍 nginx.org Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”,是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/ ...

  5. nginx 虚拟主机+反向代理+负载均衡

    nginx是一款免费.开源的http服务器,它是由俄罗斯程序设计师开发的,官方测试,nginx能支撑5万的并发量,主要功能有虚拟主机.反向代理和负载均衡等. nginx配置 # 全局块 ... # e ...

  6. 如何使用Weave以及Docker搭建Nginx反向代理/负载均衡服务器

    Hi, 今天我们将会学习如何使用 Weave 和 Docker 搭建 Nginx 的反向代理/负载均衡服务器.Weave 可以创建一个虚拟网络将 Docker 容器彼此连接在一起,支持跨主机部署及自动 ...

  7. 项目实战2.2—nginx 反向代理负载均衡、动静分离和缓存的实现

    实验一:实现反向代理负载均衡且动静分离 1.环境准备: 机器名称 IP配置 服务角色 备注 nginx VIP:172.17.11.11 反向代理服务器 开启代理功能 设置监控,调度 rs01 RIP ...

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

    Nginx 反向代理 负载均衡 虚拟主机配置 通过本章你将学会利用Nginx配置多台虚拟主机,清楚代理服务器的作用,区分正向代理和反向代理的区别,搭建使用Nginx反向搭理和负载均衡,了解Nginx常 ...

  9. Nginx 反向代理 负载均衡 虚拟主机

    Nginx 反向代理 负载均衡 虚拟主机配置 通过本章你将学会利用Nginx配置多台虚拟主机,清楚代理服务器的作用,区分正向代理和反向代理的区别,搭建使用Nginx反向搭理和负载均衡,了解Nginx常 ...

  10. 十.nginx反向代理负载均衡服务实践部署

    期中集群架构-第十章-nginx反向代理负载均衡章节章节====================================================================== 0 ...

随机推荐

  1. centos6.5 64练手安装memcached,PHP调试

    思路  先安装 memcached  然后安装php的基于扩展libmemcache ,然后安装php memcache扩展包,然后把扩展添加到php.ini 1 yum安装 简单方便 yum ins ...

  2. linux查看磁盘占用常用的两个命令

    1.查看总容量.已使用.未使用容量:df -hl -h:以kb以上单位显示 -l:仅显示本地文件系统 2.查看当前路径下,每个文件/夹占用空间大小:du -sh *

  3. IdUDPServer中文汉字乱码 及IdTCPClient

    官网 http://www.indyproject.org/docsite/html/frames.html?frmname=topic&frmfile=TIdTCPServer_OnExec ...

  4. SourceTree使用方法

    一 .SourceTree简介 SourceTree 是 Windows 和Mac OS X 下免费的 Git 和 Hg 客户端,拥有可视化界面,容易上手操作.同时它也是Mercurial和Subve ...

  5. jquery formValidator 表单验证插件, ajax无法传值到后台问题的解决

    今天使用jquery   formValidator-4.0.1 这个插件做表单验证,  前台验证已写好, 准备写ajax验证, 结果无法把值传到后台 .ajaxValidator({ url : & ...

  6. input文本框 放上图片img 通过padding relative和absolute 的实现

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. 7 python 模块间相互导入

    python在不同层级目录import模块的方法 注意,在python3里,即使目录下没__int__.py文件也能创建成功,猜应该是解释器优化所致,但创建包还是要记得加上这个文件 吧. 1.模块的分 ...

  8. python os.mkdir与 os.makedirs

    1.mkdir( path [,mode] )      作用:创建一个目录,可以是相对或者绝对路径,mode的默认模式是0777.      如果目录有多级,则创建最后一级.如果最后一级目录的上级目 ...

  9. mtr 命令详解

    一般在windows 来判断网络连通性用ping 和tracert,ping的话可以来判断丢包率,tracert可以用来跟踪路由,在Linux中有一个更好的网络连通性判断工具,它可以结合ping ns ...

  10. 由于C++类库版本不同导致的OpenCV编译链接错误

    太长不看版:GCC4和GCC5使用的C++标准库下,string的名字不一样,导致链接错误. 之前在Ubuntu下使用OpenCV的时候一切正常.后来再次编译的时候,连接器提示有些库函数找不到: ma ...