Nginx概述
Nginx功能介绍
- 静态的web资源服务器html,图片,js,css,txt等静态资源
- http/https协议的反向代理 ,7层 url
- 结合FastCGI /uWSGI/SCGI等协议反向代理动态资源请求
- tcp/udp协议的请求转发(反向代理) 4层
基础特性:
- 模块化设计,较好的扩展性
- 高可靠性
- 支持热部署:不停机更新配置文件,升级版本,更换日志文件
- 低内存消耗:10000个keep-alive连接模式下的非活动连接,仅需2.5M内存
- event-driven, aio, mmap,sendfile
Web服务相关的功能
- 虚拟主机(server)
- 支持 keep-alive 和管道连接(利用一个连接做多次请求)
- 访问日志(支持基于日志缓冲提高其性能)
- url rewirte
- 路径别名
- 基于IP及用户的访问控制
- 支持速率限制及并发数限制
- 重新配置和在线升级而无须中断客户的工作进程
Nginx架构:master + woker
主进程(master process)的功能:用来管理工作进程。
工作进程(worker process)的功能:用来处理用户的请求。
Nginx模块
- 核心模块:是 Nginx 服务器正常运行必不可少的模块,提供错误日志记录 、配置文件解析 、事件驱动机制 、进程管理等核心功能
- 标准HTTP模块:提供 HTTP 协议解析相关的功能,比如: 端口配置 、 网页编码设置 、 HTTP响应头设置 等等
- 可选HTTP模块:主要用于扩展标准的 HTTP 功能,让 Nginx 能处理一些特殊的服务,比如:Flash 多媒体传输 、解析 GeoIP 请求、 网络传输压缩 、 安全协议 SSL 支持等
- 邮件服务模块:主要用于支持 Nginx 的 邮件服务 ,包括对 POP3 协议、 IMAP 协议和 SMTP协议的支持
- Stream服务模块: 实现反向代理功能,包括TCP协议代理 四层
- 第三方模块:是为了扩展 Nginx 服务器应用,完成开发者自定义功能,比如: Json 支持、 Lua 支持等
nginx高度模块化,但其模块早期不支持DSO机制;1.9.11 版本支持动态装载和卸载
常用模块
ngx_http_core_module 核心模块
ngx_http_access_module 访问控制 deny allow
ngx_http_auth_basic_module 身份验证
ngx_http_gzip_module 压缩模块
ngx_http_log_module 日志模块
ngx_http_proxy_module 代理模块
ngx_http_rewrite_module 重写模块
ngx_http_stub_status_module 状态页模块
ngx_http_upstream_module 反向代理
ngx_http_stream_module 四层代理
安装及使用Nginx
1编译安装nginx
源码包内的文件:
- contrib:vim 格式文件,修改nginx配置文件的格式,高亮 cp -r /opt/nginx-1.18.0/contrib/vim/* /usr/share/vim/vimfiles/
- conf:配置文件
- man:man帮助 man man/nginx.8 不加路径看不了 nginx.8 文件
- src:源码包 点c 点h 结尾的文件 find src -type f |xargs cat |wc -l 193678
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 --help
#查看帮助模块
./configure --prefix=/apps/nginx \
--user=nginx \
--group=nginx \
--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
make -j2 && make install
#编译并安装
chown -R nginx.nginx /apps/nginx
#修改权限
启动停止nginx
/apps/nginx/sbin/nginx
#绝对路径启动
ln -s /apps/nginx/sbin/nginx /usr/sbin/
#创建软连接后直接 nginx启动
停止nginx
killall nginx
创建Nginx 自启动文件
#复制同一版本的nginx的yum安装生成的service文件
vim /usr/lib/systemd/system/nginx.service
#建立文件
[Unit] Description=nginx - high performance web server Documentation=http://nginx.org/en/docs/ After=network-online.target remote-fs.target nss-lookup.target Wants=network-online.target[Service] Type=forking 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 LimitNOFILE=100000[Install] WantedBy=multi-user.target
###如果需要修改pid文件可以执行以下操作#################
mkdir /apps/nginx/run/#创建目录vim /apps/nginx/conf/nginx.conf#修改配置文件pid /apps/nginx/run/nginx.pid;#找到 pid的位置修改
systemctl daemon-reload
#重新加载配置
systemctl enable --now nginx
#开机自启并立即启动 如果卡主是应为logs下有 nginx.pid 文件 删除即可
chown -R nginx.nginx /apps/nginx
#修改权限
yum安装nginx
centos7 需要安装epel源yum install -y epel-release#安装epel源 额外 rpeoyum install nginx -y
nginx命令
nginx 命令支持向其发送信号,实现不同功能 nginx 当做单独命令使用有以下选项 nginx -t 检查语法 nginx -T 检查语法 并打印所有配置 nginx -v 显示版本 nginx -V 显示详细信息, 包括 编译的信息 nginx -c 指定配置文件启动 nginx -s = kill 发送信号
nginx -s relaod 重新加载配置文件
nginx -s stop 停止nginx 立即停止
nginx -s quit 优雅的退出 , 如果有人在访问我的服务, 那么不会立即关闭, 等客户断开连接再 退出
nginx -s reopen 重新生成日志文件 USR1 日志 有关
nginx -s USR2 飞行中升级
nginx命令 | kill命令 | 含义 |
nginx -s relaod | kill -s HUP | 重新加载配置文件 |
nginx -s stop | kill -9(KILL) | 立即停止 |
nginx -s quit | kill -3(QUITt) | 优雅的退出 |
nginx -s reopen | kill -s USR1 | 重新生成日志文件 |
nginx | kill -s USR2 | 飞行中升级 |