牛初九 2016-08-08
Nginx是一款轻量级的Web和反向代理服务器,它的诞生主要是为了解决C10K的问题,它具有较多的特性;
Nginx的特性:
1、模块化设计,具有较好的扩展性
2、具有高可靠性
3、支持热部署:可以在不影响用户使用的情况下,升级老版本;可以不停机更新配置文件、更换日志文件、更换服务器程序版本
4、低消耗内存:10K个keepalive连接模式下的非活动连接仅消耗2.5M内存
5、是event-driven事件驱动模型:具有一个主进程,多个子进程,每个子进程响应多个请求
Nginx的基本功能:
1、静态资源的web服务器
2、可以作为http协议的正反向代理服务器
正向代理:Nginx作为服务器,可直接响应资源给客户端
反向代理:Nginx作为代理器,客户端不直接和服务器交流,而是通过和代理服务器的代理器来交流;通过代理器来读取服务器中的资源,从而响应给客户端
3、支持pop3/imap4协议反向代理服务器
4、支持FastCGI、UWSGI等
5、支持模块化:例如ssl、zip
Nginx的程序架构图:
Master:Master为主进程,主要作用是加载配置文件、管理worker进程、可进行平滑升级
Worker:worker为子进程,由master主进程生成,一个worker进程可以处理多个客户端请求;主要作用是接受客户端请求、http代理、FastCGI代理、Memcache代理、在磁盘内缓存以及管理磁盘内的缓存
准备环境:
虚拟机1:nginx | IP:172.18.42.200 |
虚拟机2:httpd(后端主机) | IP:172.18.42.201 |
虚拟机3:httpd(后端主机) | IP:172.18.42.202 |
一、实现“ngx_http_auth_basic_module”认证机制
1、虚拟机1安装nginx服务
[root@node0 ~]# yum install nginx
2、编辑nginx主配置文件
[root@node0 ~]# vim /etc/nginx/nginx.conf ##nginx的主配置文件
server {
listen 80; ##监听的端口
server_name localhost;
root /www/lweim/; ##指定读取资源路径
location /nginx {
auth_basic "Show your Information"; ##指定提示页
auth_basic_user_file /etc/nginx/.ngxpasswd; ##指定密码文件路径
}
}
[root@node0 nginx]# htpasswd -c -m /etc/nginx/.ngxpasswd lweim ##创建虚拟用户“lweim”
-c:当.nginxpasswd这个文件不存在时需使用
-m:使用md5算法
[root@node0 ~]# echo "172.18.42.200 Nginx 1" > /www/lweim/nginx/index.html
3、访问web页面
二、实现“ngx_http_stub_status_module”基本状态信息
1、编辑配置文件
[root@node0 ~]# vim /etc/nginx/nginx.conf
server {
listen 80;
server_name localhost;
root /www/lweim/;
location /status { ##指明状态页面目录
stub_status on; ##开启状态页
}
}
[root@node0 ~]# mkdir /www/lweim/status/ ##创建状态页目录
2、访问web
Active connections:处于活动状态的客户端连接数量
Accepts:已经接受客户端的总请求数量
Handled:已经处理客户单的总请求数量
Request:客户端发出的总请求数量
Reading:正在读取客户端请求报文首部的连接数量
Writing:正在向客户端发送响应报文的连接数量
Waiting:正在等待客户端发出请求的空闲进程数
更多Nginx相关教程见以下内容:
三、实现“ngx_http_ssl_module”https请求
1、在未修改配置文件之前尝试访问“https://172.18.42.200”
2、修改配置文件
server {
listen 80;
server_name localhost;
root /www/lweim/;
}
server {
listen 443 ssl; ##https监听在tcp的443端口
server_name localhost;
ssl_certificate /etc/nginx/ssl/ngx.crt; ##指明ngx.crt的文件路径
ssl_certificate_key /etc/nginx/ssl/ngx.key; ##指明ngx.key的文件路径
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location /nginx {
}
}
Ssl on | off:是否启用当前虚拟主机的ssl功能
Ssl_ certificate file:当前虚拟主机使用的PEM格式的证书文件
Ssl_certificate_key file:当前虚拟机使用的证书文件中的公钥配对的私钥文件路径,依然是PEM格式
Ssl_protocols [SSLv2] [SSLv3] [TLSv1] [TLSv1.1] [TLSv1.2]:表示ssl协议的版本;摩恩为后3个
Ssl_session_cache off | none | [ builtin [ : size ] ] [ shard : name : size ]:指明ssl会话缓存的机制
builtin:使用openssl内建的缓存机制,对此机制为各worker独有
shared:在各个worker进程共享的缓存
name:缓存空间的名称
size:缓存空间的大小以字节为单位,每1MB内存可缓存4000个会话
Ssl_session_time timeout:ssl会话时长,指ssl session cache中缓存条目时长
3、再次访问web