简介
起源:
世界第二大web服务器软件,以高并发、低消耗著称,源自于俄罗斯,创建者 Igor(伊戈尔),2004年开源,最早以代理服务器的身份出现,2015成立nginx公司,
2019年以6.7亿被F5 Networks公司收购。
nginx的基础特性:
模块化设计,较好的扩展性
高可靠性
支持热部署,不停机更新配置文件,升级版本,更换日志文件
低内存消耗,10000个keep-alive下的非活动连接,仅需2.5M内存
event-driven(事件驱动),aio(异步非阻塞),mmap(内存映射),sendfile(代理转发)
基本功能:
静态资源的web服务器
http协议的反向代理
fastcgi、uWSGI(python)
pop3/imap4邮件反向代理
模块化,zip、ssl等模块
nginx进程结构:
Master/Worker 结构:一个 master 进程,生成一个或多个 worker 进程。
master:
读取nginx配置文件,验证有效性和正确性
建立、绑定和关闭socket连接
接受外界指令,比如重启、开、关服务
不中断服务,平滑升级
处理perl脚本
worker:
接受处理客户的请求(按模块区分)
I/O调用
与后端服务器通信
缓存数据
发送请求结果
接受主程序的指令
nginx模块:
核心模块:core module
标准模块:
ngx_http_*
ngx_mail_*
ngx_upstream_*
注:本实验为单机部署,实验前确保网络能正常上网
配置文件及参数
全局配置文件:/etc/nginx/nginx.conf
虚拟主机配置:/etc/nginx/conf.d/*.conf
前提条件
关闭selinux
输入getenforce 获取当前selinux状态
Enforcing为开启,Disabled为关闭
临时关闭 # sudo setenforce 0
永久关闭 # sudo vi /etc/sysconfig/selinux
开放nginx的80端口号
firewall-cmd --zone=public --add-port=80/tcp --permanent
重启防火墙
firewall-cmd --reload
查看端口号是否开启
firewall-cmd --query-port=80/tcp
.3.检查是否已安装rpm包nginx
rpm -q nginx \\查看是否安装
nginx安装和配置:
安装前提软件环境
yum -y install gcc gcc-c++ make libtool zlib zlib-devel pcre pcre-devel`openssl openssl-devel
复制nginx和缓存包到/usr/src,解压
useradd -s /sbin/nologin nginx
cd /usr/src
tar zxf master.tar.gz
tar zxf ngx_cache_purge-2.3.tar.gz
tar zxf nginx-1.12.0.tar.gz
编译安装nginx
cd /usr/src/nginx-1.12.0
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx \
--with-http_stub_status_module --with-http_realip_module --with-http_ssl_module \
--with-http_gzip_static_module --http-client-body-temp-path=/var/tmp/nginx/client \
--http-proxy-temp-path=/var/tmp/nginx/proxy --http-fastcgi-temp-path=/var/tmp/nginx/fcgi \
--with-pcre --add-module=../ngx_cache_purge-2.3 --with-http_flv_module \
--add-module=../nginx-goodies-nginx-sticky-module-ng-08a395c66e42 \
&&make&&make install
添加nginx系统服务并启动
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
mkdir -p /var/tmp/nginx/client
chown -R nginx:nginx /var/tmp/nginx
vim /etc/init.d/nginx
添加启动脚本
#!/bin/bash
PROG="/usr/local/nginx/sbin/nginx"
PIDF="/usr/local/nginx/logs/nginx.pid"
case "$1" in
start)
netstat -anplt |grep ":80" &> /dev/null && pgrep "nginx" &> /dev/null
if [ $? -eq 0 ]
then
echo "Nginx service already running."
else
$PROG -t &> /dev/null
if [ $? -eq 0 ] ; then
$PROG
echo "Nginx service start success."
else
$PROG -t
fi
fi
;;
stop)
netstat -anplt |grep ":80" &> /dev/null && pgrep "nginx" &> /dev/null
if [ $? -eq 0 ]
then
kill -s QUIT $(cat $PIDF)
echo "Nginx service stop success."
else
echo "Nginx service already stop"
fi
;;
restart)
$0 stop
$0 start
;;
status)
netstat -anplt |grep ":80" &> /dev/null && pgrep "nginx" &> /dev/null
if [ $? -eq 0 ]
then
echo "Nginx service is running."
else
echo "Nginx is stop."
fi
;;
reload)
netstat -anplt |grep ":80" &> /dev/null && pgrep "nginx" &> /dev/null
if [ $? -eq 0 ]
then
$PROG -t &> /dev/null
if [ $? -eq 0 ] ; then
kill -s HUP $(cat $PIDF)
echo "reload Nginx config success."
else
$PROG -t
fi
else
echo "Nginx service is not run."
fi
;;
*)
echo "Usage: $0 {start|stop|restart|reload}"
exit 1
esac
启动nginx服务
chmod +x /etc/init.d/nginx
chkconfig --add nginx
chkconfig nginx on
service nginx start
netstat -anpt | grep nginx
查看版本
nginx -v
查看模块
nginx -V
安装包在文件里免费下载:nginx编译安装包.rar