
关于Nginx
Nginx是一个轻量的web服务器/反向代理服务器/电子邮件代理服务器,占用内存少,并发能力强。
nginx是由c语言开发的。
反向代理
反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。
反向代理隐藏了真正的服务端。
正向代理
是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理。
比如vpn。
环境搭建
安装
nginx官网
nginx安装需要相关的依赖库,否则配置和编译会出现错误。
gcc编译器、openssl库、pcre库、zlib库
一次安装命令:yum install gcc openssl-devel pcre pcre-devel zlib zlib-devel -y
然后解压缩官网下载的nginx压缩包。
配置安装目录./configure --prefix=/安装目录
编译make
安装make install
普通启动
运行sbin目录下的nginx文件./nginx
nginx由master进程和worker进程组成。
master进程读取配置文件,并维护worker进程,而worker进程则对请求进行实际处理。
启动成功后,访问80端口便会出现如下欢迎页面:
通过配置文件启动
-c 参数指定配置文件绝对路径./nginx -c nginx.conf配置文件绝对路径
关闭
优雅的关闭
找出进程号,执行下面的命令kill -QUIT 主pid
pid是主进程号,即master process。其他worker process为子进程。
这种关闭方式会使nginx不再接受新的请求,等待nginx处理完请求后再关闭。快速关闭
kill -TERM 主pid
直接关闭,比较暴力。
或者直接kill。
重启
一般用于修改配置,重启服务器。./nginx -s reload
其他
在启动命令后加 -t 会检查配置文件是否正确
successful是正确,failed是失败。
只能检查语法错误(废话)
查看版本
1 | 查看nginx版本。 |
配置文件
1 | #配置worker进程运行用户,默认用户为nobody。nobody用户一般用于启动程序,没有密码。 |
静态网站部署
修改配置文件
1 | location /项目名(请求根路径) { |
重启nginx即可访问。
index.html 磁盘存放路径为 /项目根路径/项目名/index.html
访问的url为 ip:port/项目名/index.html
负载均衡
负载均衡通常指将请求均匀地分摊到集群的多个服务器节点上执行,这里均匀指在比较大的统计范围内是基本均匀的,并不是完全均匀的。
硬件负载均衡
比如 F5、深信服、Array 等
优点是有厂商专业技术团队提供支持,性能稳定。
缺点是费用昂贵。
软件负载均衡
比如 Nginx、LVS、HAProxy 等
优点是开源免费,成本低。
nginx负载均衡
示例:www.example.com
修改配置文件
server中添加
1 | location / { |
server上添加
1 | upstream www.example.com { |
nginx负载均衡策略
- 轮询(默认)
每个请求会按时间顺序逐一分配到不同的后端服务器。如果服务器down掉了,会自动剔除。一般后端服务器性能接近。 - 权重
通过权重值分发请求,值越大访问的比例越大,用于后端服务器性能不均的情况。
参数weight=1
- 最少连接
请求会被转发到链接数最少的服务器上。
在upstream中添加least conn;
- ip_hash
ip_hash也叫ip绑定,每个请求按访问ip的hash值分配,这样每个访问客户端会固定访问一个后端服务器,可以解决session会话丢失的问题。
在upstream中添加ip hash;
其他配置
- 参数
backup
标记该服务器为备用服务器。当主服务器停止时,请求会被转发到这里。 - 参数
down
标记该服务器停机。
静态代理
将所有静态资源访问改为访问nginx,而不是tomcat。因为nginx更擅长静态资源的处理,性能更好,效率更高。
在配置文件中,配置静态资源所在目录
1 | location ~.*/(css|js|img|images){ |
正则匹配目录,比匹配后缀会好一些。
动静分离
- 本文标题:Nginx笔记
- 本文作者:咕咕咕
- 创建时间:2022-06-24 19:28:18
- 本文链接:https://cooooing.github.io/学习笔记/Nginx笔记/
- 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!