NginxTabTan
本篇笔记记录于2020年11月,迁移至此,分享给需要它的人。
简介
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。
其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
反向代理、负载均衡、动静分离
正向代理
例如配置代理服务器,通过代理服务器访问网络,就叫做正 向代理。
反向代理
反向代理就是客户端对代理是无感知的,不需要任何配置就能访问,只需要将数据发送到反向代理服务器,由反向代理服务器选择目标服务器获取数据再返回给客户端。对外暴露的是代理服务器的地址,隐藏了真实服务器的地址。
负载均衡
单个服务器解决不了,我们增加服务器的数量,然后请求分发到各个服务器上。将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器也就是我们所说的负载均衡。
动静分离
把动态页面和静态页面由不同的服务器来解析,加快解析速度。降低原来单个服务器的压力。
安装与命令
安装
- 安装 pcre (下载地址:https://sourceforge.net/projects/pcre/)
- tar zxvf pcre-8.44.tar.gz -C /usr/local/src/
- cd /usr/local/src/pcre-8.44
- ./configure
- make && make install 编译、执行安装
- pcre-config --version 查看版本号
- 安装其他依赖 yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
- 安装nginx
- tar zxvf nginx-1.18.0.tar.gz -C /usr/src/ 解压
- cd /usr/src/nginx-1.18.0/ 进入nginx目录
- ./configure 检查
- make && make install
- cd /usr/local/nginx/sbin
- ./nginx
- 防火墙规则
- firewall -cmd --list
- sudo firewall-cmd --add-port=8001/tcp --permanent 添加端口
- firewall-cmd --reload 重新加载防火墙
命令
- 查看nginx版本号 ./nginx -v
- 启动 nginx ./ nginx
- 关闭nginx ./nginx -s stop
- 重加载nginx ./nginx -s reload
配置文件
第一部分:全局块
第二部分:events块
第三部分:http块
Nginx配置实例
Nginx配置实例 - 反向代理
lsof -nP -i:8080 查看端口占用
location ~ /tomcat7/ {
proxy_pass http://101.201.125.13:8001;
index index.html;
}
location ~ /tomcat9/ {
proxy_pass http://101.201.125.13:8002;
index index.html;
}
Nginx配置实例 - 负载均衡
http{
#myserver是自定义的服务名字
upstream myserver{
server ip:poot(eg:8001);
server ip:port;
}
server{
location / {
proxy_pass http://myserver;
root html;
index index.html index.htm;
}
}
}
分配的策略
1 轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器宕机,能自动剔除。
2 weight
-
weight代表权,默认为1,权重越高被分配的用户越多。
-
指定轮询机率,weight和访问比例成正比,用于后端服务器性能不均的情况。
upstream server_pool{
server ip:port weight=10;
server ip:port weight=10;
}
3 ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
upstream server_pool{
ip_hash;
server ip:port;
server ip:port;
}
4 fair (第三方)
按后端服务器的相应时间来分配请求,响应短的优先分配。
upstream server_pool{
server ip:port;
server ip:port;
fair;
}
Nginx配置实例 - 动静分离
server{
location /www/ {
#这里的root后面写的是根路径
root /data/;
}
location /image/ {
root /data/;
# 自动显示此路径下的内容
autoindex on;
}
}
高可用
准备
- 两台nginx服务器
- keepalived
- 虚拟IP
安装 keepalived
yum install keepalived -y
查看版本信息
rpm -q -a keepalived
安装位置
/etc/keepalived
配置文件
keepalived.conf
启动命令
systemctl start keepalived.service