nginx

keepalived+nginx   实现高可用

corosync+nginx     实现高可用

keepalive

nginx:   1. web服务器(具有web服务器最基本的功能)

             2.反向代理:web、mail

nginx实现了模块化

varnish、squid

nginx缓存:缓存在磁盘

httpd缓存:apache缓存在磁盘、内存中

nginx热部署,平滑升级

一个主进程和多个工作进程,工作进程以非特权用户运行。

nginx启动的时候,内部会生成一个master主进程和多个worker进程。

master主进程的工作:1.读取并验证配置信息

                                    2.创建、绑定、关闭套接字

                                    3.启动、终止、维护worker进程的个数

                                    4.无需终止服务而重新配置工作特性

                                    5.控制非中断式程序升级、启用新的二进制程序并在需要时回滚至老版本

                                    6.重新打开日志文件

                                    7.编译嵌入式perl脚本

worker进程主要完成的任务:

                                      1.接收、传入并处理来自客户端的连接

                                      2.提供反向代理及过滤功能

                                      3.nginx任何能完成的其他任务

cache   loader进程主要完成的任务:

                                      1.检查缓存存储中的缓存对象

                                      2.使用缓存元数据建立内存数据库

cache  manager进程的主要任务:

                                      1.缓存的失效及过期检查

nginx配置有几个不同的上下文:main (主配置文件)、http 、server  、  upstream(实现反向代理)、   location  、  mail(实现邮件服务的反向代理)

nginx:每一个server定义一个虚拟主机i

url:   

location URL {  }:   对当前路径及子路径下的所有对象都生效;                                                                                      

location  =URL {  }:   精确匹配指定的路径,不包括子路径,因此,只对当前资源生效;                                               优先级最高A

location  ~URL{  }:   模式匹配,区分字符大小写                                                                                                                  

location  ~*  URL{  }:   模式匹配url,此处的url可使用正则表达式,~区分字符大小写,~*不区分字符大小写;                                                                    优先级E

location  ^~  URL{  }:  不使用正则表达式                                                                                                                                                                               优先级D

                第一个/为根,第二个/为根下的路径

location   /url/  {                                                                                                                                                                                                                             优先级C

    root   "/web/htdocs";        url就是root指定的路径 ,及url就等于/usr/nginx/web/htdocs;

}

等同于

location   /htdocs/  {                                                                                                                                                                                                                                                                                        优先级C

    root   /web;        url就是root指定的路径 ,及url就等于/usr/nginx/web/htdocs;

 

}

location   /  {                

   root     html;    相对路径,相对于nginx默认安装路径而言,即  /usr/nginx/html,在这下面会有index定义的页面                                                                                    优先级B

   index   index.html   index.htm;      主页面:

}

location =/50x.html{            /表示nginx默认根路径,这一个location  的完整地址意思就是,在/usr/html下面会有50x.html这一个网页文件                                    优先级最高A

     root   html;

}

访问控制:   默认允许所有主机访问

allow    ip地址;        小范围在上面         允许某个主机访问

deny  all;                   大范围在下面         拒绝所有主机访问    (包括本机也拒绝了),如果只想拒绝某个主机访问,则使用格式    deny    拒绝访问的主机ip; 

nginx加入认证:   

htpasswd:    第二次创建用户不能使用  -c  选项

步骤:

yum install httpd

htpasswd  -c  -m /etc/nginx/.users   tom

然后进入nginx的配置文件nginx.conf   ,在location里面加入后面两个auth_.....

location / {
index a.html;
deny 192.168.108.129;
auth_basic "Restricted Area...";
auth_basic_user_file /etc/nginx/.users;
}

最后需要重新加载和重启nginx配置文件才生效,即

systemctl  reload  nginx;

systemctl  restart  nginx;

然后访问nginx的ip地址即可。

活动连接数:

在配置文件中加入

location /status {
stub_status on;

}

然后浏览器访问  ip/status    即可

================================================================

nginx支持ssl

生成证书时,注意语法,需要空格

(umask 077; openssl genrsa 2048 > private/cakey.pem)

[root@node2 CA]# (umask 077; openssl genrsa 2048 > private/cakey.pem)
Generating RSA private key, 2048 bit long modulus
........+++
............................................................+++
e is 65537 (0x10001)

 ==============================================nginx================================================================================

nginx:   map

            event-driver:一个进程响应多个请求,单线程进程

io模型:阻塞、非阻塞、同步、异步;

             同步阻塞、异步阻塞(io复用、event-driver)、异步非阻塞(aio)

mem cache:缓存关系型数据库中的数据

================================================================nginx反向代理==============================================================

首页静态化

使用服务器组

可以实现分发的服务器:

  lvs(4层协议):可以在短时间内转发数百万请求(配置复杂)

  nginx(七层协议):(有对系统要求量小,但转发能力不如haproxy)(有缓存功能)

  haproxy(七层协议):

反向代理:

正向代理:代理客户端访问目标服务器

nginx配置文件  (分段配置)

main,  

       worker_process    work进程数

       error_log

       user

       group

events{             事件驱动

}

httpd{               关于http相关的配置

}

server{             虚拟主机

}

location{         上下文

                       url访问属性

把root换成proxy_pass,就可以定位到后端服务器上了

}

location  [op]  URL{

}

模式匹配:~   区分大小写  , ~*   不区分大小写 ,  ^~   , =   定向到指定内容

http://172.16.100.11:8080/bbs/ ; 模式匹配中,后面的反向代理不能精确到具体的路径。所以不能写   /bbs

server{           后端服务

}

location可以放在server中,也可以放在httpd中

sever只能放在httpd中

server不能嵌套,location可以嵌套。

每一个指令都要分号   ;    结尾

upstream模块:定义在server之外。

    上游服务器

一个location里面定义多个服务器,也可以实现负载均衡的效果

每一个server定义每一个后端服务器

没有权重,权重为0,不做负载均衡

有了权重,加强论调,还可以选择端口映射

定义server的时候,只能跟server地址或者server名称,不能使用http,不能使用协

 

健康状态检查:

server 127.0.0.1:9090 down; (down 表示单前的server暂时不参与负载) 
server 127.0.0.1:8080 weight=2; (weight 默认为1.weight越大,负载的权重就越大) 
server 127.0.0.1:6060; 
server 127.0.0.1:7070 backup; (其它所有的非backup机器down或者忙的时候,请求backup机器) 

max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误                  max_fails=2  fail_timeout=2;

fail_timeout:max_fails次失败后,暂停的时间

ip_hash:  根据客户端请求的原地址做hash,只要hash相同就一直分发到同一个客户端

nginx支持的负载均衡算法:

round-robin (默认使用) :如果定义了权重,默认使用round-robin。如果没有设置权重,则这个服务器没有参加负载均衡。

ip_hash :在server内标明   ip_hash即可   ,只要第一次去到这个页面,那么接下来只要hash值相同去到的都是这个页面。

least_conn(最少连接,会检查客户端的连接状态,挑一个连接数最少的进行连接) :

在有ip_hash的情况下,不能使用  backup ,要不第一次去到这个backup的错误页面,接下来都去到了这个错误页面。

netstat   -ant  :当前客户端的连接数量

netstat  -ant|grep  80

==================================================nginx缓存=============================

对于nginx来说,每一种应用所使用的缓存都不一样

cache:  共享内存(存储键和缓存对象元数据)

               磁盘空间:存储数据

对于缓存服务器来说,磁盘的缓存性能是至关重要的

定义缓存空间:  proxy_cache_path

proxy_cache_path:

proxy_cache_valie    200   10n;      对200缓存10分钟

原文地址:https://www.cnblogs.com/linqiuhua/p/9235444.html