网站建设的公司开发方案,下载软件大全,wordpress 表格,安徽地图nginx介绍
Nginx的版本分为开发版、稳定版和过期版#xff0c;nginx以功能丰富著称#xff0c;它即可以作为http服务器#xff0c;也可以作为反向代理服务器或者邮件服务器#xff0c;也可以作为反向代理服务器或者邮件服务器#xff0c;能够快速的响应静态网页的请求nginx以功能丰富著称它即可以作为http服务器也可以作为反向代理服务器或者邮件服务器也可以作为反向代理服务器或者邮件服务器能够快速的响应静态网页的请求支持FastCGI/SSL/Virtual Host/URL Rwrite/Gzip/HTTP Basic Auth/http或者TCP的负载均衡(1.9版本以上且开启stream模块)等功能并且支持第三方的功能扩展
nginx功能
静态的web资源服务器html图片jscsstxt等静态资源http/https协议的反向代理 7层结合FastCGI/uWSGI/SCGI等协议反向代理动态资源请求tcp/udp协议的请求转发反向代理 4层
nginx进程结构
多进程方式服务器每接收到一个客户端请求就有服务器的主进程生成一个子进程响应客户端直到用户关闭连接这样的优势是处理速度快子进程之间相互独立但是如果访问过大会导致服务器资源耗尽而无法提供请求。多线程方式与多进程方式类似但是每收到一个客户端请求会有服务进程派生出一个线程来个客户方进行交互一个线程的开销远远小于一个进程因此多线程方式在很大程度减轻了web服务器对系统资源的要求但是多线程也有自己的缺点即当多个线程位于同一个进程内工作的时候可以相互访问同样的内存地址空间所以他们相互影响一旦主进程挂掉则所有子线程都不能工作了IIS服务器使用了多线程的方式需要间隔一段时间就重启一次才能稳定
nginx模块
核心模块是 Nginx 服务器正常运行必不可少的模块提供错误日志记录 、配置文件解析 、事件驱动机制 、进程管理等核心功能
标准HTTP模块提供 HTTP 协议解析相关的功能比如 端口配置 、 网页编码设置 、 HTTP响应头设置 等等
可选HTTP模块主要用于扩展标准的 HTTP 功能让 Nginx 能处理一些特殊的服务比如Flash 多媒体传输 、解析 GeoIP 请求、 网络传输压缩 、 安全协议 SSL 支持等
邮件服务模块主要用于支持 Nginx 的 邮件服务 包括对 POP3 协议、 IMAP 协议和 SMTP协议的支持
Stream服务模块: 实现反向代理功能,包括TCP协议代理
第三方模块是为了扩展 Nginx 服务器应用完成开发者自定义功能比如 Json 支持、 Lua 支持等
nginx安装与使用
yum安装nginx
http://nginx.org/en/linux_packages.html #官网
yum install -y epel-release #安装epel源
yum install nginx -y #安装nginx编译安装nginx
yum -y install gcc pcre-devel openssl-devel zlib-devel openssl openssl-devel
#安装依赖包
useradd -M -s /sbin/nologin nginx
#新建nginx用户便于管理cd /opt/
wget http://nginx.org/download/nginx-1.18.0.tar.gz#官网下载安装包
tar xf nginx-1.18.0.tar.gz #解压软件包
cd nginx-1.18.0/
mkdir /apps/nginx -p./configure --prefix/apps/nginx \
--usernginx \
--groupnginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-pcre \
--with-stream \
--with-stream_ssl_module \
--with-stream_realip_modulemake -j2make install # 编译安装chown -R nginx.nginx /apps/nginx
#修改权限/apps/nginx/sbin/nginx#绝对路径启动
ln -s /apps/nginx/sbin/nginx /usr/sbin/ #创建软连接后直接 nginx启动conf保存nginx所有的配置文件
html目录中保存了nginx服务器的web文件
logs用来保存nginx服务器的访问日志错误日志等日志
sbin保存nginx二进制启动脚本将nginx添加系统服务
vim /usr/lib/systemd/system/nginx.service #建立.service文件[Unit]
Descriptionnginx - high performance web server
Documentationhttp://nginx.org/en/docs/
Afternetwork-online.target remote-fs.target nss-lookup.target
Wantsnetwork-online.target
[Service]
Typeforking
PIDFile/apps/nginx/logs/nginx.pid #注意文件位置如果不对 启动不了
ExecStart/apps/nginx/sbin/nginx -c /apps/nginx/conf/nginx.conf #注意启动文件位置
ExecReload/bin/kill -s HUP $MAINPID
ExecStop/bin/kill -s TERM $MAINPID
[Install]systemc
WantedBymulti-user.target通过脚本运行启动
vim /etc/init.d/nginx
#!/bin/bash
#chkconfig: - 99 20
#description:Nginx Service Control Script
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)
;;
*)
echo Usage: $0 {start|stop|restart|reload}
exit 1
esac
exit 0
chmod x /etc/init.d/nginx
chkconfig --add nginx #添加为系统服务
chkconfig --list nginxservice nginx start
service nginx stop #哪个开启用那个关闭
systemctl stop nginx
systemctl start nginx
修改pid文件位置
mkdir /apps/nginx/run/ #创建目录
vim /apps/nginx/conf/nginx.conf #修改配置文件
pid /apps/nginx/run/nginx.pid; #找到 pid的位置修改
systemctl daemon-reload #重新加载配置nginx信号使用
nginx -h/? #帮助
nginx -v #显示版本号
nginx -V #显示编译详细信息情况 模块等信息
nginx -s stop #立即关闭nginx
nginx -s quit #不影响业务的状态下退出
nginx -s reload #重新加载
nginx -s reopen #分割日志
nginx -g user zhangsan; #以张三身份运行默认是以nginx身份
nginx -g daemon off; #前台运行命令
nginx -t #检查语法格式
nginx -T #打印配置文件
nginx -c 文件 #指明加载配置文件分割日志
[rootnode2 nginx]cd /var/log/nginx/
#切换到
[rootnode2 nginx]mv access.log access.log.bak
[rootnode2 nginx]touch access.log
#此时日志不会写入到新文件
[rootnode2 nginx]ps aux |grep nginx
[rootnode2 nginx]kill -s USR1 117994
[rootnode2 nginx]nginx -s reopen 平滑升级
将旧Nginx文件换成新Nginx文件(注意备份)向master进程发送USR2信号master进程修改pid文件名加后缀.oldbinmaster进程用新Nginx文件启动新master进程,系统中将有新旧两个Nginx主进程共同提供Web服务向旧的Nginx服务进程发送WINCH信号使旧的Nginx worker进程平滑停止并删除Nginx.pid.oldbin文件向旧master进程发送QUIT信号,关闭老master如果发现升级有问题,可以回滚向老master发送HUP向新master发送QUIT
[rootlocalhost ~]ps aux |grep nginx #先查看是否开启nginx
[rootlocalhost ~]vim /apps/nginx/conf/nginx.conf
#开启 两核
#user nobody;
worker_processes 2; #worker_processes 1 原来是1核
[rootlocalhost ~]ln -s /apps/nginx/sbin/nginx /usr/bin/
[rootlocalhost ~]nginx -s reload #重新加载配置文件
[rootlocalhost ~]wget https://nginx.org/download/nginx-1.20.2.tar.gz -P /usr/local/src/ #下载安装包到src目录
[rootlocalhost ~]cd /usr/local/src
[rootlocalhost src]tar xf nginx-1.20.2.tar.gz #解压
[rootlocalhost src]cd nginx-1.20.2/
[rootlocalhost nginx-1.20.2]nginx -V #查看详细信息
[rootlocalhost nginx-1.20.2]./configure --prefix/apps/nginx --usernginx --groupnginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module --with-stream_realip_module #重新编译
[rootlocalhost nginx-1.20.2]make #不要make install
[rootlocalhost objs]cd objs #此文件夹中有新版本的nginx 运行程序
[rootlocalhost objs]./nginx -v #查看版本
nginx version: nginx/1.20.2
[rootlocalhost objs]mv /apps/nginx/sbin/nginx /apps/nginx/sbin/nginx.bak #将低版本的nginx主程序改名
[rootlocalhost objs]cp /usr/local/src/nginx-1.20.2/objs/nginx /apps/nginx/sbin/ #将新版本 拷入进去
[rootlocalhost objs]/apps/nginx/sbin/nginx -t #检查语法问题
[rootlocalhost nginx]kill -USR2 cat /apps/nginx/logs/nginx.pid #发送信号[rootlocalhost nginx]dd if/dev/zero of/apps/nginx/html/m.img bs1G count10 #校验
[rootlocalhost nginx]wget --limit-rate1M http://192.168.65.110/m.img #开启新机器下载
[rootlocalhost nginx]ss -ntap|grep 80 #查看进程管理下载
LISTEN 0 128 *:80 *:* users:((nginx,pid8850,fd6),(nginx,pid8849,fd6),(nginx,pid8848,fd6),(nginx,pid5489,fd6),(nginx,pid5488,fd6),(nginx,pid5146,fd6))
ESTAB 0 0 192.168.65.110:22 192.168.65.1:59680 users:((sshd,pid1785,fd3))
ESTAB 0 461224 192.168.65.110:80 192.168.65.103:38450 users:((nginx,pid5488,fd3))[rootlocalhost nginx]ls /apps/nginx/logs/ #有新老两个进程
access.log error.log nginx.pid nginx.pid.oldbin[rootlocalhost nginx]cat /apps/nginx/logs/nginx.pid.oldbin
5146
[rootlocalhost nginx]kill -WINCH cat /apps/nginx/logs/nginx.pid.oldbin #关闭老进程[rootlocalhost nginx]#pstree -p |grep nginx #查看老进程|-nginx(5146)---nginx(8848)--nginx(8849)| -nginx(8850)