网址导航:
官网nginx.org
www.nginx.com
常用参数
一、 nginx的基本信息
1. 什么是nginx
—Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。
—Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
2. nginx的优点
(1)跨平台、配置简单;
(2)非阻塞、高并发连接:处理2-3万并发连接数,官方监测能支持5万并发;
(3)内存消耗小:开启10个nginx才占150M内存,Nginx采取了分阶段资源分配技术;
(4)nginx处理静态文件好,耗费内存少;
(5)内置的健康检查功能:如果有一个服务器宕机,会做一个健康检查,再发送的请求就不会发送到宕机的服务器了。重新将请求提交到其他的节点上。
(6)节省宽带:支持GZIP压缩,可以添加浏览器本地缓存;
(7)稳定性高:宕机的概率非常小
(8)master/worker结构:一个master进程,生成一个或者多个worker进程。
(9)接收用户请求是异步的:浏览器将请求发送到nginx服务器,它先将用户请求全部接收下来,再一次性发送给后端web服务器,极大减轻了web服务器的压力;
(10)一边接收web服务器的返回数据,一边发送给浏览器客户端;
(11)网络依赖性比较低,只要ping通就可以负载均衡;
(12)事件驱动:通信机制采用epoll模型。
3. nginx和Apache的区别
两者最核心的区别在于apache是同步多进程模型,一个request对应一个进程,而nginx是异步的,多个连接(万级别)可以对应一个进程。
一般来说,需要性能的web服务,用nginx,如果不需要性能只求稳定,更考虑Apache,后者的各种模块实现的比前者好很多,更通用的方案是,前端nginx抗并发,后端apache集群,配合起来会更好。
二、nginx的搭建部署
1、安装所需插件
1.1 安装gcc
gcc是linux下的编译器,它可以编译 C,C++,Ada,Object C和Java等语言
yum install -y gcc
gcc -v 查看gcc版本
1.2安装pcre-devel
pcre是一个perl库,包括perl兼容的正则表达式库,nginx的http模块使用pcre来解析正则表达式,所以需要安装pcre库。
yum install -y pcre-devel
1.3 安装openssl
openssl是web安全通信的基石,没有openssl,可以说我们的信息都是在裸奔
yum install -y openssl-devel
2. 安装nginx
wget https://nginx.org/download/nginx-1.20.1.tar.gz 下载安装包
tar zxf nginx-1.20.1.tar.gz 解压
vim /root/nginx-1.20.1/auto/cc/gcc 关闭debug
#debug
#CFLAGS="$CFLAGS -g"
./configure --prefix=/usr/local/nginx --with-threads --with-file-aio --with-http_ssl_module --with-http_stub_status_module 编译
make
make install
3. 初始化配置nginx
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ 建立软链接开启全局nginx
which nginx
nginx -t 检测语法
nginx 开启服务
netstat -antlp 查看端口
ps ax | grep nginx 查看进程
useradd -d /usr/local/nginx/ -M -s /sbin/nologin nginx 建立nginx的管理用户
vim /usr/local/nginx/conf/nginx.conf 编辑初始化配置文件
user nginx; 管理用户
worker_processes 2或者auto; 工作进程数,不得大于cpu内核数
worker_connections 65535; 单个工作进程并发连接数
}
vim /etc/security/limits.conf
nginx - nofile 65536 worker进程的最大打开文件数限制,大于单个工作进程并发连接数
nginx -s reload 重置服务不报错
nginx -s stop 停止服务
cd /usr/lib/systemd/system 开启systemd启动
vim nginx.service
[Unit] 对服务的说明
Description=The NGINX HTTP and reverse proxy server 描述服务
After=syslog.target network.target remote-fs.target nss-lookup.target 描述服务类别
[Service] 服务的一些具体运行参数的设置
Type=forking 后台运行的形式
PIDFile=/usr/local/nginx/logs/nginx.pid PID文件的路径
ExecStartPre=/usr/local/sbin/nginx -t 启动准备
ExecStart=/usr/local/sbin/nginx 启动命令
ExecReload=/usr/local/sbin/nginx -s reload 重启命令
ExecStop=/bin/kill -s QUIT $MAINPID 停止命令
PrivateTmp=true 给服务分配临时空间
[Install]
WantedBy=multi-user.target 服务用户的模式
systemctl daemon-reload 刷新服务列表
systemctl enable --now nginx.service 启动服务
systemctl status nginx 查看nginx状态
vim /usr/local/nginx/html/index.html
1111
nginx -s reload
4. 测试
宿主机中测试:
vim /etc/hosts
172.25.28.1 www.westos.org
curl www.tao.com
1111 成功
三、并发优化
ulimit -a 可以查看用户可以打开文件的限制 ##open files
sysctl -a | grep file ##打开文件的限制
///fs.file-max = 183593
free -m
四、负载均衡+反向代理
4.1 负载均衡
server1:
scp -r /usr/local/nginx/ [email protected]:/usr/local/
scp -r /usr/local/nginx root@server3:/usr/local/
server2:
vim /usr/local/nginx/html/index.html
2222
vim /usr/local/nginx/conf/nginx.conf
#user nginx;
worker_processes auto;
worker_conn