nginx 的基本使用
一般来说, nginx 默认使用的是 80 端口号。但一般都会改掉,因为80默认是被其他给占用的。
常用命令:
查看nginx进程情况:
ps -ef|grep nginx
检测nginx配置是否ok:(/usr/local/nginx/conf/nginx.conf 正确且有效)
../sbin/nginx -t
重新加载配置:
../sbin/nginx -s reload
信号:
./nginx -s stop 停止
./nginx -s quit 退出
./nginx -s reload 重加载
./nginx -t 测试
nginx包括两个进程:mater进程(主进程)、worker进程(工作进程,默认为1个,可修改配置数量)
nginx的进程模型:
传统服务器事件处理:
nginx worker抢占机制:
nginx事件处理(异步非阻塞):
worker最大连接数(默认1024,默认采用epoll机制):
nginx配置文件 nginx.conf配置结构:
nginx日志级别(级别越低越详细):(最低)debug、info、notice、warn、error、crit(最高)。
一般使用目录存放:/var/log/nginx/error.log
include 包含指令:将配置放到一个独立的文件包含进来。 include xxx.conf。
nginx.pid打开失败,解决方案?:
在sbin下 执行 ./nginx -h 查看帮助文档。
原因:1)目录不存在;2)文件不存在。
1、创建文件夹目录:
1) mkdir /var/run/nginx
再次启动nginx: 2) cd /usr/local/nginx/ 3) cd sbin/ 4) ./nginx -t 5) ./nginx -s reload
文件不存在,重新指定配置路径:
#pid /logs/nginx.pid
2、重新指定配置文件路径:
1)在sbin下 执行 ./nginx -c /usr/local/nginx/conf/nginx.conf。
2) ./nginx -s reload
./sbin 下命令
./nginx -v 查看版本号
./nginx -V 查看完整信息
./nginx -s stop 立即停止(快速停止,暴力关闭,不友好)
./nginx quit 优雅停止
./nginx -? or ./nginx -h 查看帮助文档。
方式1:nginx日志切割(手动):在/usr/local/nginx/sbin/目录下手动创建shell脚本,修改执行权限,并执行即可。
执行脚本:
方式2:nginx日志切割(定时),通过crone定时任务工具。
支持gzip压缩(提升请求效率):
url解析:
location匹配规则解析:
精确匹配、正则匹配、匹配失败错误页面显示规则:
域名解析,使用SwitchHosts开源工具模拟本地域名解析访问:或手动修改/etc/hosts文件,末尾添加新的ip 域名对应项,会优先匹配配置文件,后使用域名服务器解析域名(如果匹配不到)。
nginx跨域问题解决:
在server所在的全局配置中添加如下几行即可:
支持防盗链配置(invalidxxx validxxx是变量):
nginx模块化体系:
nginx src源码目录结构:
四层负载均衡&七层负载均衡:
DNS地域负载均衡:
负载均衡实现之ip_hash:根据客户端ip(诸如:192.168.1.172)的前3个字段来进行一个hash算法的计算,来进行均衡处理。同一网段的多台客户机由于前三个字段是一样的,所以每次访问的请求都是会落在同一台服务器上,看不出负载均衡的效果,不同网段应该是可以的。
hash算法的问题:新增或减少服务器,会重新进行hash计算,原来的会话、缓存等不可用,等待时间更长。
解决方案=》一致性hash算法(ip_hash hash算法的改进):
原理 类比(学区房):
一致性hash算法(ip_hash hash算法的改进)
负载均衡之url_hash:根据url进行hash算法计算映射对应服务器节点。
负载均衡之least_conn:根据配置的最小连接数进行映射匹配服务器节点。
浏览器缓存:
静态资源,如果配置了过期时间,且如果资源文件未发生更改,则在过期时间内的请求,会读缓存,超过过期时间或资源文件发生修改,则重新读取资源,不使用缓存。也可以在浏览器中强制禁用缓存。
使用缓存的响应状态码是304,不使用的响应状态码是200 ok:
nginx控制浏览器缓存(expires指令):
nginx的反向代理缓存(缓存存放在nginx服务器上):
使用nginx配置https域名对应的ssl证书提供https访问:(前提申请一个备案域名的ssl证书)
1)给nginx安装ssl模块,要在nginx中配置https,就必须安装ssl模块,就是http_ssl_module。
进入到nginx 的解压目录,修改.configure文件,尾部新增ssl模块“–with-http_ssl_module”;重新编译,安装,执行 make,make install命令。
2)把ssl证书“.crt”和私钥“.key”拷贝到/usr/local/nginx/conf目录中;在server代码块之内,location之上,新增server监听443端口(配置):listen 443;开启ssl(配置): ssl on;最后依次添加配置命令:配置ssl证书,配置ssl证书密钥,配置ssl加密套件,写法遵循openssl标准,即可。
3)最后reload nginx:./nginx -s reload。
42.动静分离的那些事儿,看到这里了。后续单独学习整理后续的内容。
备注:对于一些指令及其含义可以参考nginx官网文档查看。
参考视频资料:https://www.bilibili.com/video/BV1W44y1J74a?p=42
原创文章,作者:bd101bd101,如若转载,请注明出处:https://blog.ytso.com/268422.html