文章目录
Nginx服务
Nginx是一款高性能,轻量级Web服务软件,其优点稳定性高,系统资源消耗低,对HTTP并发连接的处理能力高(单台物理服务器可支持30000~50000个并发请求)
Nginx相对于Apache的优点:
轻量级,同样是Web服务,比Apache 占用更少的内存及资源﹔
高并发,Nginx处理请求是异步非塞的,而Apache 则是阻塞型的,在高并发下Nginx能保持低资源低消耗高性能;
高度模块化的设计
编写模块相对简单;社区活跃,各种高性能模块出品迅速。
Apache相对于Nginx的优点:
rewrite,比Nginx的rewrite强大;模块超多,基本想到的都可以找到;少bug,Nginx的bug相对较多;超稳定
存在就是理由,一般来说,需要性能的web服务,用Nginx。如果不需要性能只求稳定,那就Apache。Nginx处理动态请求是弱项,一般动态请求要Apache去做,Nginx只适处理静态网页或反向代理。
编译安装Nginx服务
1.关闭防火墙,将Nginx软甲包 传到/opt 目录下,安装依赖包
2.编译安装
make && make install
3.将Nginx加入 /usr/local/sbin 目录中
4.启动服务
检查,启动,重启,停止,nginx服务
nginx -t ##启动
nginx ##停止
cat /usr/local/nginx/logs/nginx.pid ##查看nginx的PID号
kill -3 <PID号>
kill -s OUIT <PID号>
killall -3 nginx
killall -s QUIT nginx
#重载
kill -s HUP <PID号>
#日志分隔,重新打开日志文件
kill -USR1 <PID号>
#平滑升级
kill -USR2 <PID号>
#查看版本号
nginx -v
管理nginx服务
[root@zzz opt]# cd nginx-1.12.2/
[root@zzz nginx-1.12.2]# cd objs/
[root@zzz objs]# cd /etc/init.d/
[root@zzz init.d]# vim nginx
#!/bin/bash
#chkconfig: 35 99 21
#desc: this is used for control nginx service
COM="/usr/local/nginx/sbin/nginx"
PID="/usr/local/nginx/logs/nginx.pid"
case $1 in
start)
$COM
;;
stop)
kill -s QUIT `cat $PID`
;;
restart)
$0 stop
$0 start
;;
reload)
kill -s HUP `cat $PID`
;;
status)
tmp=`ps -ef | grep nginx | egrep -cv "grep|$$"`
ps -ef | grep nginx | egrep -v "grep|$$"
if [ "$tmp" -le 1 ];then
echo "Nginx 服务未启动"
else
echo "Nginx 服务已启动"
fi
;;
*)
echo "Usage: $0 {start|stop|restart|status|reload}"
exit 1
esac
exit 0
给予权限,加入系统服务中
[root@zzz init.d]# chmod +x nginx
[root@zzz init.d]# chkconfig --add nginx
[root@zzz init.d]# service nginx status
第二种方法,加入system文件
[Unit] 服务的说明
Description=nginx 描述服务
After=network.target 依赖,当依赖的服务启动之后再启动白定义的服务
[Service] 服务运行参数的设置
Type=forking 是后台运行的形式,使用此启动类型应同时指定PIDFile=,以便 systemd能够跟踪服务的主进程。
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx 为服务的具体运行命令
ExecReload=/bin/kil1 -s HUP $MAINPID 重启命令
ExecStop=/bin/kill -s QUIT $MAINPID 停止命令
PrivateTmp=true 服务分配的独立临时空间
[Install]
WantedBy=multi-user.target 服务安装的相关设置,可设置为多用户
认识Nginx 配置文件
Nginx配置文件所在位置
查看有效行
1、全局块 :配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。
2、events块: 配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。
3、http块: 可以嵌套多个server,配置代理,级存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。
4、server块: 配置虚拟主机的相关参数,一个http中可以有多个server。
5、location块: 配置请求的路由,以及各种页面的处理情况。
如提高每个进程的连接数还需执行"ulimit -n 65535"命令临时修改本地每个进程可以同时打开的最大文件数。 根据cpu性能设置的
在Linux平台上,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每个TCP连接都要创建一个socket句柄,每个socket句柄同时也是一个文件句柄)。
可使用ulimit -a命令查看系统允许当前用户进程打开的文件数限制。
epoll是Linux内核为处理大批句柄而作改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著的减少程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。
日志格式设定:
$ remote_addr与$http_ x _ forwarded_for用以记录客户端的ip地址址;
$remote_user:用来记录客户端用户名称;
$time_local:用来记录访问时间与时区;
$request:用来记录请求的url与http协议
$status:用来记录请求状态;成功是200
$body bytes_sent :记录发送给客户端文件主体内容大小;
$http_referer:用来记录从哪个页面链接访问过来的;
$ http user agent:记录客户浏览器的相关信息;
通常web服务器放在反向代理的后面,这样就不能获取到客户的IP地址了,通过$remote_ add拿到的IP地址是反向代理服务器的iP地址。反向代理服务器在转发请求的http头信息中,可以增加x_forwarded for信息,用以记录原有客户端的IP地址和原来客户端的请求的服务器地址。
location常见配置指令,root、 alias.,proxy_pass
root(根路径配置): root /var/ www / html
请求www . kgc.com/test/1.html,会返回文件/var/www /html/test/1.html
alias(别名配置): alias /var/ www / html
请求www . kgc.com/test/1.html,会返回文件/var/www / html/ 1.html
proxy_pass (反向代理配置)
访问状态统计配置
重启服务之后。我们再浏览器验证
字段代表的意思
Active connections :表示当前的活动连接数:
server accepts handled requests :表示已经处理的连接信息,三个数字依次表示已处理的连接数、成功的TCP握手次数、已处理的请求数。
基于授权的访问控制
1.生成用户密码认证文件
2.修改主配置文件相对应目录,添加认证配置项目
3.重启服务
4.打开网页验证
基于客户端的访问控制
访问控制规则如下:
deny IP/IP段:拒绝某个IP或IP段的客户端访问。
allow IP/IP段:允许某个IP或IP段的客户端访问。
规则从上往下执行,如匹配则停止,不再往下匹配。
实例:只允 主机位为 103 访问,其余全部拒绝
1.修改配置文件
[root@zzz system]# vim /etc/nginx.conf
2.开启浏览器验证
切换到 102的主机上去访问(nginx服务在102的机子上)这个配置一设 本机也就没有访问权限了
切换到103的机子上去访问
基于域名的 Nginx虚拟主机
在客户机上设置
切换到服务器
编辑配置文件
vim /etc/nginx.conf
重启服务
[root@zzz conf]# systemctl restart nginx.service
开网页验证