Nginx学习文档

1.1 发展

Nginx是一款轻量级Web 服务器/反向代理服务器及电子邮件IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler(俄文:Рамблер)使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东新浪网易腾讯淘宝等。

 

1.2 平台支持

Nginx 可以在大多数 Unix like OS 上编译运行,并有 Windows 移植版。 Nginx 1.4.0稳定版已经于2013424日发布。

Nginx代码完全用C语言从头写成,已经移植到许多体系结构和操作系统,包括:LinuxFreeBSDSolarisMac OS XAIX以及Microsoft WindowsNginx有自己的函数库,并且除了zlibPCREOpenSSL之外,标准模块只使用系统C库函数。而且,如果不需要或者考虑到潜在的授权冲突,可以不使用这些第三方库.

1.3 负载均衡

Nginx作为负载均衡服务器Nginx 既可以在内部直接支持 Rails PHP 程序对外进行服务,也可以支持作为 HTTP代理服务器对外进行服务。Nginx采用C进行编写,不论是系统资源开销还是CPU使用效率都比 Perlbal 要好很多。

在连接高并发的情况下,NginxApache服务器不错的替代品:Nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一。能够支持高达 50,000 个并发连接数的响应,感谢Nginx为我们选择了 epoll and kqueue作为开发模型。

 

 

2. 安装使用

2.1 本机环境

     Ubuntu 16.4 64位 ,虚拟机,内存4G

2.2  Ubuntu自带方式安装(快速,方便,需要联网)

2.2.1 安装命令

打开终端,执行命令  sudo apt-get install nginx

2.2.2 配置文件位置

/etc/nginx/sites-available/default

2.2.3 启动停止方式

service nginx (start|stop|status|restart)

 

2.3   编译安装(Linux平台,需先安装依赖库)

 

 

 

Nginx依赖PCRE,zlib,SSL,所以安装前需要先安装这三个库.

 

2.3.1 PCRE安装

新建目录,执行命令 mkdir nginx_work  ,进入该目录 ,执行 cd nginx_work

a ) 下载安装包:(项目发布时会直接提供压缩包),执行命令

    wget http://nchc.dl.sourceforge.net/project/pcre/pcre/8.37/pcre-8.37.tar.gz

 

:如果执行命令,提示找不到文件或目录,在终端下将wget和网址之间的空格删除,再重新打上就可以了,应该是word将空格转成中文了

b) 解压文件 ,执行命令 tar -zxvf pcre-8.37.tar.gz ,并进入该目录 cd pcre-8.37/

c) 依次执行命令 ,sudo ./configure   |  sudo make  | sudo make install

 

2.3.2  Zlib库安装

回到nginx_work目录下,

a) 下载安装包:(项目发布时会直接提供压缩包),执行命令

    wget http://ncu.dl.sourceforge.net/project/libpng/zlib/1.2.8/zlib-1.2.8.tar.gz

 

:如果执行命令,提示找不到文件或目录,在终端下将wget和网址之间的空格删除,再重新打上就可以了,应该是word将空格转成中文了

b) 解压文件 ,执行命令 tar -zxvf zlib-1.2.8.tar.gz ,并进入该目录 cd zlib-1.2.8/

c) 依次执行命令 ,sudo ./configure   |  sudo make  | sudo make install

2.3.3 SSL 安装

回到nginx_work目录下,

a) 下载安装包:(项目发布时会直接提供压缩包),执行命令

    wget http://www.openssl.org/source/openssl-1.0.1p.tar.gz

 

:如果执行命令,提示找不到文件或目录,在终端下将wget和网址之间的空格删除,再重新打上就可以了,应该是word将空格转成中文了

b) 解压文件 ,执行命令 tar -zxvf openssl-1.0.1p.tar.gz ,并进入该目录 

c) 依次执行命令 ,sudo ./config   |  sudo make  | sudo make install

    (:这里是 config)

2.3.4 Nginx安装

回到nginx_work目录下,

a) 下载安装包:(项目发布时会直接提供压缩包),执行命令

    wget http://nginx.org/download/nginx-1.2.8.tar.gz

:如果执行命令,提示找不到文件或目录,在终端下将wget和网址之间的空格删除,再重新打上就可以了,应该是word将空格转成中文了

b) 解压文件 ,执行命令 tar -zxvf nginx-1.2.8.tar.gz ,并进入该目录 

c) 依次执行命令,  sudo ./configure --prefix=/home/ykserver1/nginx_work/nginx  

|  sudo make  | sudo make install

 

 

2.3.5 编译安装的Nginx 配置文件位置

/home/ykserver1/nginx_work/nginx/conf/nginx.conf

(:前面部分已自己的安装位置为准)

2.3.6 编译安装的Nginx启动停止方式

回到nginx_work目录下,

启动 sudo ./nginx/sbin/nginx

停止 sudo ./nginx/sbin/nginx  -s stop

重新加载配置文件 sudo ./nginx/sbin/nginx  -s reload

 

启动后访问本机IP就可以看到Nginx的欢迎界面,默认监听(80端口)

 

3. 负载均衡配置

此处已编译安装为例,Ubuntu方式安装请自行参考

 

3.1 规划

 

Nginx代理    192.168.0.135:9999

Server1      192.168.0.107:8080  

Server2      192.168.0.135

 

请求Nginx代理,会将请求均匀的分发到 Server1Server2上面.

3.2 修改配置文件

回到nginx_work目录下,

执行命令 sudo vim nginx/conf/nginx.conf,修改结果如下

从第80行开始增加如下配置(大括号后面)

upstream ykserver {

       # server1  

       server 192.168.0.107:8080;

       # server2  

       server 192.168.0.135;

   }

 

   server {

       listen 9999;

 

       location / {

           proxy_pass http://ykserver;

           #auth_basic "Restricted";  

           #auth_basic_user_file pwd;  

       }

   }

 

3.3 启动Nginx,查看效果

启动Nginx(如果已经启动,可以使用reload的方式,或者停止再启动),使配置生效.

在浏览器中输入 : http://192.168.0.135:9999/

可能看到的是Tomcat的欢迎界面(此时确保107机器上的Tomcat运行中),也有可能是Nginx的欢迎界面.

刷新,就会发现两者会不停的切换!

(:有时刷新可能会没效果,这是缓存的原因,如果是chrome浏览器,鼠标按住刷新按钮不放,就会弹出硬性刷新菜单,点击选择,就会发现页面切换了)

现在135机器上已经部署成功,可以直接访问.

 

3.4 Nginx的负载均衡机制

nginx支持下面几种负载均衡机制:

§ round-robin:轮询。以轮询方式将请求分配到不同服务器上(默认)

§ least-connected:最少连接数。将下一个请求分配到连接数最少的那台服务器上

§ ip-hash :基于客户端的IP地址。散列函数被用于确定下一个请求分配到哪台服务器上

3.4.1 最少连接负载均衡

在一些要求需要更长的时间才能完成的应用情况下, 最少连接可以更公平地控制应用程序实例的负载。使用最少连接负载均衡,nginx不会向负载繁忙的服务器上分发请求,而是将请求分发到负载低的服务器上。

    配置文件

upstream ykserver {

           #最少连接数

           least_conn;

       # server1  

       server 192.168.0.107:8080;

       # server2  

       server 192.168.0.135;

   }

 

 

3.4.2 会话持久性

以轮询或最少连接的负载均衡算法,每个后续的客户端的请求,可以潜在地分配给不同的服务器上,并不能保证相同的客户端请求将总是指向同一服务器上。

这对于有会话信息的应用场景下,会有问题的。一般的做法是需要将session信息共享,如使用memcache来存放session

如果将客户端的会话“粘性”或总是试图选择一个特定的服务器,也是可以的。负载均衡的ip-hash机制就可以实现。

配置文件

upstream ykserver {

           #回话持久性

           ip_hash;

       # server1  

       server 192.168.0.107:8080;

       # server2  

       server 192.168.0.135;

   }

(:这种配置怎么刷新页面都不会切换了)

 

3.4.3 加权负载均衡

 

可以使用权重来进一步控制影响nginx负载均衡算法,该方式和上面三种分配方式并存,共同起作用.

配置文件

upstream ykserver {

           #最少连接数

           least_conn;

       # server1  

       server 192.168.0.107:8080 weight=2 ;

       # server2  

       server 192.168.0.135 weight=2;

   }

3.4.4 后端健康检查

max_fails=number      # 设定Nginx与服务器通信的尝试失败的次数。在fail_timeout参数定义的时间段内,如果失败的次数达到此值,Nginx就认为服务器不可用。在下一个fail_timeout时间段,服务器不会再被尝试。

配置文件

 

upstream ykserver {

       # server1  

       server 192.168.0.107:8080 weight=2 max_fails=1 fail_timeout=6s ;

       # server2  

       server 192.168.0.135 weight=2;

   }

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值