- 前言
- 1. 介绍Nginx
- 2. 部署Nginx
- 2.1 编译安装Nginx服务
- 3.Nginx 配置文件
- 3.1 全局配置
- 3.2 I/O事件配置
- 3.3 HTTP配置
- 总结
前言
Nginx是一款高性能、轻量级的Web服务软件
稳定性高、系统资源消耗低、对HTTP并发连接的处理能力高
单台物理服务器可支持30000~50000个并发请求(测试环境中会有3-5w个,生产环境中最多就有3w个)(简之就是受服务器性能的影响)
1. 介绍Nginx
Nginx是一款高性能、轻量级的Web服务软件
- 稳定性高
- 系统资源消耗低
- 对HTTP并发连接的处理能力高
单台物理服务器可支持30000~50000个并发请求(测试环境中会有3-5w个,生产环境中最多就有3w个)(简之就是受服务器性能的影响)
NG并发连接能力受2个因素的影响
1、CPU 个数(3-5w说的是默认的个数)
2、本地物理服务器系统的最大文件打开数
并发连接:并发连接数是指防火墙或代理服务器对其业务信息流的处理能力,是防火墙能够同时处理的点对点连接的最大数目,它反映出防火墙设备对多个连接的访问控制能力和连接状态跟踪能力,这个参数的大小直接影响到防火墙所能支持的最大信息点数。
企业业务环境
三种类型的环境
1.生产(用户使用的)
2.开发/发布/预生产
3.测试(随便玩)
生产:开发(2:1)
开发环境会有多个
①关闭防火墙,将安装ngnix所需的软件包上传到/opt目录下
systemctil stop firewalld.service systemctil disable firewalld.service setenforce 0
②安装依赖包
yum-y install gcc gcc-c++ pcre-devel zlib-devel make
③编译安装Nginx
tar zxvf nginx-1.12.2.tar.gz C /opt/ cd /opt/nginx-1.12.2/ ./confiqure --prefix=/usr/local/nginx #指定nginx的安装路径 --user-nginx #指定用户名 --graup=nginx #指定组名 --with-http stub status module #启用 http_stub_status_module 模块以支持状态统计 make && make install ln-s /usr/local/nginx/sbin/* /usr/local/sbin/ #让系统识别nginx的操作命令
④创建运行用户、组
useradd -M -s /sbin/nologin nginx
⑤检查、启用、添加系统管理
常用命令:
nginx -t #检查配置文件是否配置正确 nginx #启动 --------停止nginx 服务------- cat /usr/local/nginx/logs/nginx.pid #先查看nginx的PID号 kill -3kill -s QUIT #停止 killall -3 nginx killall -s QUIT nginx --------重载-------- kill -1 #重载 kill -s HUP killall -1 nginx killall -s HUP nginx 平滑升级
②添加Nginx 系统服务(systemctl or service)
方式一:使用systemctl管理
vim /usr/lib/systemd/system/nginx.service [Unit] Description=nginx After=network.target [Service] Type=forking PIDFile=/usr/local/nginx/logs/nginx.pid ExecStart=/usr/local/nginx/sbin/nginx ExecrReload=/bin/kill -s HUP $MAINPID ExecrStop=/bin/kill -s QUIT $MAINPID PrivateTmp=true [Install] WantedBy=multi-user.target [Unit] Description=nginx #描述 After=network.target #描述服务类别 [Service] Type=forking #后台运行类型 PIDFile=/usr/local/nginx/logs/nginx.pid #PID文件位置 ExecStart=/usr/local/nginx/sbin/nginx #启动服务 ExecrReload=/bin/kill -s HUP $MAINPID #根据PID重载配置 ExecrStop=/bin/kill -s QUIT $MAINPID #根据PID终止进程 PrivateTmp=true [Install] WantedBy=multi-user.target #启动级别 chmod 754 /lib/systemd/system/nginx.service #赋权,除了root以外的用户都不能修改 systemctl start nginx.service systemctl enable nginx.service systemctl status 多个服务 watch -n 2 systemctl status3.Nginx 配置文件
#备份 cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.bak # cat /usr/local/nginx/conf/nginx.conf vim /usr/local/nginx/conf/nginx.conf3.1 全局配置
#user nobody; #默认运行/管理用户 worker processes 1; #工作进程运行数量,可配凹成服务器内核数2,如果网站访问量不大,一般设为1 #error log logs/error.log; #错误日志文件路径/级别 #error log logs/error.log notice; #error log logs/error.log info; #pid logs/nginx.pid; #pid文件位置3.2 I/O事件配置
events{
use epoll; #使用 epoll 模型,2.6及以上版本的系统内核,建议使用epoll模型以提高性能
worker_connections 4096; #每个进程处理 4096 个连接
}
注意:
两种修改方式,以下是临时
如提高每个进程的连接数还需执行"ulimit -n 65535" (临时调整)命令临时修改本地每个进程可以同时打开的最大文件数.
在Linux平台上,在进行启并发TCP连接外理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量g眼制
可使用ulimit -a命令查石系统允许当前用户进程打开的文件数限制.
nginx接受最大并发,受CPU限制
最大文件打开数是65535
#http协议配置
http {
##文件扩展名与文件类型映射表
include mime.types;
##默认文件类型
default_type application/octet-stream;
##日志格式设定
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
##访问日志位置
#access_log logs/access.log main;
##支持文件发送(下载)
sendfile on;
##此选项允许或禁止使用socke的TCP_CORK的选项(发送数据包前先缓存数据),此选项仅在使用sendfile的时候使用
#tcp_nopush on;
##连接保持超时时间,单位是秒
#keepalive_timeout 0;
keepalive_timeout 65;
##gzip模块设置,设置是否开启gzip压缩输出
#gzip on;
##Web 服务的监听配置
server {
##监听地址及端口
listen 80;
##站点域名,可以有多个,用空格隔开
server_name www.lic.com;
##网页的默认字符集
charset utf-8;
##根目录配置
location / {
##网站根目录的位置/usr/local/nginx/html
root html;
##默认首页文件名
index index.html index.htm;
}
##内部错误的反馈页面
error_page 500 502 503 504 /50x.html;
##错误页面配置
location = /50x.html {
root html;
}
}
}
总结 1、首先nginx与httpd以静态页面处理+动态页面转发的功能上比较类似,但是nginx “优势在于①抗高并发+②轻量级+③性能稳定"-->httpd与nginx区别 2、 nginx的配置文件中包含的模块从全局-->具体匹配的URI,分为以下几种 ①全局模块 在此模块中定义的内容,会生效于所有配置 ②http 应用于用户以http方式访问nginx这个过程 ③server服务 适用于通过端口、ip、域名的访问方式的请求 ④location-->URL www.abc.com/index. html



