初识Nginx
Nginx的三大应用场景
- 静态资源服务
- 通过本地文件系统提供服务
- 反向代理服务
- Nginx 的强大性能
- 缓存
- 负载均衡
- API 服务
- OpenResty
优点:
- 高并发、高性能
- 可扩展性好
- 高可靠性
- 热部署
- BSD 许可证
在线配置生成工具
服务器查看
1 2 3 4 |
# 物理CPU个数 cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l # 每个CPU的核数 cat /proc/cpuinfo| grep "cpu cores"| uniq |
Nginx 的组成
- Nginx 二进制可执行文件
- Nginx.conf 配置文件
- access.log 访问日志
- error.log 错误日志
编译Nginx
访问http://nginx.org/en/download.html下载稳定版,以.1.16.1为例
1 2 3 4 5 6 7 8 |
http://nginx.org/download/nginx-1.16.1.tar.gz tar -zxf nginx-1.16.1.tar.gz && cd nginx-1.16.1 cp -R contrib/vim/ ~/.vim/ # 让Nginx 语法可以在 vi 或 vim 编辑器中生效 # 默认配置编译 ./configure --prefix=/home/xxx/nginx # 编译中间文件位于objs/目录下 make && make install |
Nginx 命令行
1 2 3 4 5 6 7 8 |
-?或-h 帮助 -c 使用指定的配置文件 -g 指定配置指令 -p 指定运行目录 -s 发送信号 nginx -s stop | quit | reload | reopen 立刻停止|优雅停止|重载配置文件|重新开始记录日志文件 -t或-T 测试配置文件语法错误 -v或-V 打印 Nginx 的版本信息、编译信息等 |
命令行演示
1 2 3 4 5 6 7 8 9 10 |
cd /home/xxx/nginx/sbin ./nginx -s reload # 热部署 # 热更新 # 编译新版本 Nginx,备份sbin/下的原nginx文件 cp nginx nginx.old # 拷贝新编译的 nginx 文件到目录中替换原版本文件 kill -USR2 master_pid # master_pid为通过ps -ef | grep nginx可查询到的进程号 kill -WINCH master_pid # 老worker优雅地退出 # 老的 master 进程为防止需回退返回不会自动退出 |
日志切割示例
1 2 3 4 5 6 7 8 9 10 11 12 13 |
在/usr/local/nginx/logs下创建nginxLogRotate.sh #!/bin/bash #Rotate the nginx logs to prevent a single logfile from consuming too much disk space LOGS_PATH=/usr/local/nginx/logs YESTERDAY=$(date -d "yesterday" +%Y-%m-%d) mv ${LOGS_PATH}/access.log ${LOGS_PATH}/access_${YESTERDAY}.log mv ${LOGS_PATH}/error.log ${LOGS_PATH}/error_${YESTERDAY}.log # 向 Nginx 主进程发送 USR1 信号。USR1 信号是重新打开日志文件 kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid) vi /etc/crontab或 crontab -e 0 0 * * * root /usr/local/nginx/logs/nginxLogRotate.sh |
常见问题
1、./configure: error: the HTTP rewrite module requires the PCRE library.
./configure: error: the HTTP gzip module requires the zlib library.
1 2 3 4 5 6 |
apt-get install libpcre3 libpcre3-dev apt-get install zlib1g-dev apt-get install openssl libssl-dev yum install -y pcre-devel yum install -y zlib-devel |
2、Too many open files
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
lsof | wc -l lsof -w | grep deleted lsof|grep deleted|awk '{print $2}'|xargs kill -9 cat /proc/{nginx-master-process-id}/limits | grep 'Max open files' cat /proc/sys/fs/file-max cat /proc/sys/fs/file-nr ps -ef |grep 'shutting down' |awk '{print $2}'|xargs kill -9 # 杀死未关闭应用 vi /etc/security/limits.conf * soft nofile 65535 * hard nofile 65535 sysctl -p |