时隔一周再次更新文章,同样的风格不同的味道

四、Nginx纵深对比

Nginx 和 apache 的优缺点

1.nginx 相对于 apache 的优点:

轻量级,同样是 web 服务,比 apache 占用更少的内存及资源高并发, nginx 处理请求是异步非阻塞(如前端 ajax)的,而 apache 则是阻塞型的,在高并发下 nginx 能保持低资源,低消耗,高性能,高度模块化的设计。

2.apache 相对于 nginx 的优点:

Rewrite 重写 ,比 nginx 的 rewrite 模块多,基本想到的都可以找到并且少 bug ,nginx 的 bug 相对较多,apache(出身好起步高)。

3.Nginx 配置简洁, Apache 复杂

几种常用web服务器对比

对比项\服务器

Apache

Nginx

Lighttpd

Proxy代理

非常好

非常好

一般

Rewriter


非常好

一般

Fcgi

不好


非常好

热部署

不支持

支持

不支持

系统压力

很大

很小

比较小

稳定性


非常好

不好

安全性


一般

一般

静态文件处理

一般

非常好


反向代理

一般

非常好

一般

@Author:lanyy699

五、Nginx实战安装

5-1、安装依赖

[root@lanyy ~]#yum install gcc-c++ -y

# nginx依赖包如下
[root@lanyy ~]#gcc openssl-devel pcre-devel zlib-devel

# 安装
[root@lanyy ~]#yum -y install gcc openssl-devel pcre-devel zlib-devel

5-2、解压文件

[root@lanyy ~]#tar -zxf nginx-1.8.1.tar.gz  -C /opt/software/

5-3、configure配置

进入解压后的源码目录,然后执行 configure 命令进行编译配置到指定目录下

# 先创建目录
[root@lanyy ~]#mkdir -p /usr/soft/nginx
[root@lanyy ~]#./configure --prefix=/usr/soft/nginx

nginx 负载均衡挂了一个站点有影响吗 nginx负载均衡不如单机_linux

5-4、编译安装

make && make install

安装好后,会在 /usr/soft 下生成 nginx 目录(这是我编译前指定的),这个目录就是 nginx 的软件。

5-5、Nginx命令

nginx 负载均衡挂了一个站点有影响吗 nginx负载均衡不如单机_mysql_02

启动后,访问虚拟机的 80 端口,可查看到Nginx初始界面,一旦 nginx 启动,就可以通过调用带有-s 参数的可执行文件来控制它。

使用语法:nginx -s 信号

信号可以是下列之一:

stop - 快速关机

quit - 优雅的关机

reload - 重新加载配置文件

reopen - 重新打开日志文件

例如,要停止 nginx 进程并等待工作进程完成当前请求的服务,可以执行以下命令:./nginx -s quit

@Author:lanyy699

六、Nginx配置详解

6-1、nginx默认配置详解

# 进程数,建议设置和 CPU 个数一样或 2 倍
worker_processes	2;
# 日志级别
error_log	logs/error.log	warning;(默认 error 级别)
# nginx 启动后的 pid 存放位置(nginx默认进程18621)
# pidlogs/nginx.pid;

events {
    #配置每个进程的连接数,总的连接数= worker_processes * worker_connections,根据cpu和内存大小来配置,默认1024
        worker_connections 10240;
}

http {
    include	mime.types;
    default_type	application/octet-stream;
	sendfile	on;
    # 连接超时时间,单位秒
    keepalive_timeout	65;

    server {
    listen	80;
    server_name	localhost
    # 默认请求
    location / {
    root  html;	# 定义服务器的默认网站根目录位置
    index	index.php index.html index.htm;  # 定义首页索引文件的名称
    }
	# 重定向去错误服务页面
    error_page	500 502 503 504	/50x.html;
    location = /50x.html {
    	root	html;
    }
}

6-2、Nginx负债均衡配置

nginx 支持以下负载均衡机制(或方法):

  • a) 循环 - 对应用程序服务器的请求以循环方式分发,
  • b) 最少连接数 - 将下一个请求分配给活动连接数最少的服务器,
  • c) ip-hash - 哈希函数用于确定下一个请求(基于客户端的 IP 地址)应该选择哪个服务器。
6-2-0、默认负载平衡配置

使用 nginx 进行负载平衡的最简单配置可能如下所示:

http {
	upstream lanyy{
		server srv1.example.com;
        server srv2.example.com;
        server srv3.example.com;
	}

	server {
        listen 80;
        server_name	localhost;
        location / {
			proxy_pass http://lanyy;
		} 
	}
}

nginx 负载均衡挂了一个站点有影响吗 nginx负载均衡不如单机_tomcat_03

在上面的示例中,在 srv1-srv3 上运行相同应用程序的 3 个实例。

如果没有专门配置负载均衡方法,则默认为循环法。所有请求都被代理到服务器组 shsxt,并且 nginx 应用 HTTP 负载平衡来分发请求。

6-2-1、轮询负载平衡

轮询【Round Robin】:请求在服务器上平均分配,与服务器权重有关,默认权重为1,即平均分配

upstream backend {
   server backend1.example.com;
   server backend2.example.com;
}
6-2-2、加权负载平衡

通过使用服务器权重,还可以进一步影响 nginx 负载均衡算法,谁的权重越大,分发到的请求就越多。(如下所示srv1占60%的权重,保证5次访问中3次出现srv1,并不是按照顺序出现)

upstream lanyy {
    server srv1.example.com weight=3; 
    server srv2.example.com
    server srv3.example.com;

}
6-2-3、最小连接负载平衡

在连接负载最少的情况下,nginx会尽量避免将过多的请求分发给繁忙的应用程序服务器,而是将新请求分发给不太繁忙的服务器,避免服务器过载。

upstream lanyy {
    least_conn;
        server srv1.example.com;
        server srv2.example.com;
        server srv3.example.com;
    }
6-2-4、会话持久性

上述的循环是最少连接数的负载平衡方法,每个后续客户端的请求都可能被分发到不同的服务器。不能保证相同的客户端总是定向到相同的服务器。

如果需要将客户端绑定到特定的应用程序服务器,换句话说,就是始终选择相同的服务器而言,就要使客户端的会话“粘滞”或“持久”,ip-hash 负载平衡机制就是有这种特性。使用 ip-hash,客户端的 IP 地址将用作散列键,以确定应该为客户端的请求选择服务器组中的哪台服器,此方法可确保来自同一客户端的请求将始终定向到同一台服务器,除非此服务器不可用。

upstream lanyy {
    ip_hash;
        server srv1.example.com;
        server srv2.example.com;
        server srv3.example.com;
    }

6-3、Nginx访问控制机制

Nginx 还可以对 IP 的访问进行控制,allow 代表允许,deny 代表禁止.

location / {
    allow 192.168.78.0/24;
    deny 192.168.78.1;
    allow 10.1.1.0/16;
    allow 192.168.1.0/32;
    deny all;
    proxy_pass http://lanyy;
}

从上到下的顺序,匹配到了便跳出。如上的例子先禁止了 192.168.78.1,接下来允许了 3 个网段,其中包含了一个 ipv6,最后未匹配的 IP 全部禁止访问。

@Author:lanyy699
下一篇Nginx完结篇,欢迎伙伴订阅,主要科普一下虚拟主机,正反代理,Session记录机制。