Nginx核心知识100讲笔记

2021-12-08 16:18:51 浏览数 (1)

配置文件

代码语言:javascript复制
#URL隐藏index.php
 location / {
 if (!-e request_filename) {  rewrite ^(.*) /index.php?s=/$1 last;
 }
 }
#允许txt文件访问
 location ~ .(txt|json)$ {
 root /home/www/;
 }

1编译自己的Nginx

Nginx官网

nginx.org/en/download…

下载

wget nginx.org/download/ng…

解压

tar -xzf nginx-1.18.0.tar.gz

预编译

cd nginx-1.18.0

查看文件目录

ll

拷贝contrib文件

cp -r contrib/vim/* ~/.vim/

查看configure支持哪些命令

./configure --help | more

指定Nginx安装目录, 配置 nginx

./configure --prefix=/usr/local/nginx

代码语言:javascript复制
可能有报错
错误为:./configure: error: the HTTP rewrite module requires the PCRE library.

安装pcre-devel解决问题
yum -y install pcre-devel

还有可能出现:

错误提示:./configure: error: the HTTP cache module requires md5 functions
from OpenSSL library.   You can either disable the module by using
--without-http-cache option, or install the OpenSSL library into the system,
or build the OpenSSL library statically from the source with nginx by using
--with-http_ssl_module --with-openssl=<path> options.

 

解决办法:

yum -y install openssl openssl-devel
复制代码

make编译nginx(生成2进制)

make

安装nginx(把生成的 2 进制复制到 prefix 指定的安装路径里)

make install

重启nginx重启服务

cd /usr/local/nginx/sbin

./nginx -s reload

代码语言:javascript复制
报错
nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)
解决办法
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
复制代码

nginx热部署

在不打断用户请求的情况下更新版本 切换版本,只更新二进制文件)

记录目录

cd /usr/local/nginx/sbin

查看命令

ps -ef | grep nginx

代码语言:javascript复制
[root@VM-0-8-centos sbin]# ps -ef | grep nginx
root     16664     1  0 10:59 ?        00:00:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
nobody   16671 16664  0 10:59 ?        00:00:00 nginx: worker process
root     17329  1435  0 11:04 pts/0    00:00:00 grep --color=auto nginx
复制代码

cp nginx nginx.old

ll

kill -USR2 13195

ps -ef | grep nginx

旧的平滑到新的

kill -WINCH 13195

ps -ef | grep nginx (无worker进程了,旧的master还在以做版本恢复)

日志切割

cd /usr/local/nginx/logs

mv error.log bakerror.log

../sbin/nginx -s reopen

ll

crontab -l

rotate.sh进行自动备份

查看nginx进程

ps -ef | grep nginx

kill -SIGTERM 16980

三次握手

33 | Nginx的模块究竟是什么?

34 | Nginx模块的分类

35 | Nginx如何通过连接池处理网络请求

0 人点赞