Nginx-基础
[toc]
0. 教程
1. Nginx的相关概念
- 正向代理: 隐藏客户机。利用正向代理服务器的 ip 访问服务器的数据【fan墙】
- 反向代理: 隐藏服务器。利用反向代理服务器的ip,将服务端的数据传给客户机【服务器的负载分担】
- 动静分离: 准备若干台服务器,一部分服务器专门存放静态资源(html+css+js+img等),另一部分服务器存放动态的资源。
2. Nginx的安装+启动
- ssh 连接到 Linux(以下以centos为例)
- 下载依赖、nginx: openssl + pcre + zlib +nginx
- 安装完后,nginx的根目录为:
/usr/local/nginx/
- 安装 openssl +zlib:
1 | yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel |
- 安装pcre:
1 | #下载最新版本的,注意不要用pcre2 |
- 下载 + 安装 + 启动 Nginx:
1 | wget https://nginx.org/download/nginx-1.15.9.tar.gz |
3. Nginx常用命令
Nginx命令: 所有nginx命令都必须在 /usr/local/nginx/conf
目录下进行
1 | # nginx配置文件的位置,所有nginx命令都必须在此目录下进行 |
4. 配置Nginx
开放防火墙(可选,在虚拟机中 | ecs中开放安全组的相关端口):
1
2
3
4
5
6
7
8
9# 查看防火墙的端口
firewall-cmd --list-all
# 添加端口
sudo firewall-cmd --add-port=8001-tcp --permanent
# 重启防火墙
firewall-cmd --reloadNginx的配置文件 的位置:
/usr/local/nginx/conf/nginx.conf
1 | cd /usr/local/nginx/conf |
Nginx的配置文件的3部分组成【每个层次都有1个全局块】:
全局块: 最外面1层的内容,影响全局运行配置
例如:
worker_processes 1; // nginx处理的并发数,越大越多events块: 影响网络连接
worker_connections 1024; //最大连接数
http块: 最频繁操作的部分,代理+缓存+日志等内容
- http全局块:文件引入+MIME类型+超时+日志+单次请求数上限
- server块:虚拟主机相关
- 全局server:
- location server:
5. 案例1:反向代理的配置1
效果:
浏览器访问Nginx的域名时,跳转到 Tomcat 的页面
5.1 步骤一:安装Tomcat
- 安装tomcat,使用其默认的8080端口:
yum -y install tomcat
, - 安装目录在 :
/usr/share/tomcat
, - 查看tomcat的状态:
systemctl status tomcat
, - 启动Tomcat:
systemctl start tomcat
, - 安装tomcat的web界面:
cd webapps/
+yum install -y tomcat-webapps tomcat-admin-webapps
- tomcat 的其他命令:
关闭:systemctl stop tomcat
重启:systemctl restart tomcat
开机启动:systemctl enable tomcat注意: 要开放防火墙的8080端口【ecs则要配置安全组的8080端口】
1 | # 开放端口 |
5.2 步骤二:配置Nginx反向代理
- 域名解析:
为了实现访问 nginx的域名 =》tomcat。因为目前手上没域名,使用我们需要先修改本地Windows的hosts文件,来实现域名的ip的映射。
C:\Windows\System32\drivers\etc\hosts
- 配置Nginx的请求转发
1 | cd /usr/local/nginx/conf |
找到
server
下的server_name
,将后面的localhost改为 nginx的 ip地址
将location
的大括号内,添加proxy_pass http://127.0.0.1:8080;
保存::wq
3. 重启nginx,使得配置生效:
1 | cd /usr/local/nginx/sbin |
6. 案例2:反向代理的配置2
效果:
浏览器访问 Nginx 的域名时【监听9001】,根据域名后的路径不同,跳转不同的页面【遇到edu=>跳到8080的服务器;遇到vod=>跳到8081的服务器】
6.1 准备
准备两个tomcat服务器,1个开放8080,一个开放8081
6.2 创建测试页面
在两台服务器的 tomcat 的安装目录下的 webapps内分别创建文件夹:
- edu:a.html
- vod:b.html
6.3 配置Nginx反向代理
开放 9001,8080,8081端口
打开配置文件
1
2
3cd /usr/local/nginx/conf
vim ./nginx.conf修改 nginx.conf
- 将原来 被注释的server及其内部 取消注释,将监听的端口改为9001
- server_name 后面的对应项改为 ip地址
- 将location复制1份,粘贴
1
2
3
4
5
6
7
8
9
10
11
12server {
listen 9001; #监听9001端口
server_name 相应的ip地址;
location ~ /edu/ { # 遇见/edu路径,转发到8080端口
proxy_pass http:127.0.0.1:8080;
}
location ~ /vod/ { # 遇见/vod路径,转发到8081端口
proxy_pass http:127.0.0.1:8081;
}注意:
location后,大括号前的为正则表达式,用于匹配路径。
主要有以下几项:- ~ 表示 区分大小写的正则表达式
- ~* 表示 不区分大小写的正则表达式
- = 表示严格匹配
重启nginx【
/usr/local/nginx/sbin
】:./nginx -s reload
7. 案例3:负载均衡
7.1 负载均衡的概念:
通过 增加1台 负载均衡服务器,由
负载均衡服务器
将客户端的请求
分发到多台服务器
中
7.2 效果:
在浏览器的地址栏,输入:
http://ip地址/edu/a.html
,负载均衡后,平均请求到8080、8081两个端口。即:将
http://ip地址:80/edu/a.html
的请求, => 转发到
http://ip地址:8080/edu/a.html
=> 转发到
http://ip地址:8081/edu/a.html
7.3 准备工作:
- 准备
2台Tomcat
服务器,1台监听8080
,另一台监听8081
- 在2台Tomcat的
WebApps目录
中,创建edu文件夹,并放入测试的 a.html【利用XFTP工具远程上传】- 启动2台Tomcat
7.4 步骤:
- 在Nginx的
配置文件
中,http块
内,配置以下的相关内容
1 | // 新增项,(配置:分配策略)表示要转发到哪两个服务器【要点】 |
7.5 Nginx负载均衡的分配策略:
-
轮询
-(默认的策略):【按照时间逐一分配,若服务器down掉,自动剔除。】 -
weight权重
:默认1,数字越高表示分配的请求越多。 -
ip_hash
:根据请求的IP地址的 hash值来决定分配的服务器,该策略可以保证某个客户端每次请求都分配同一个服务器,解决了Session的问题。 - fair:【第三方的策略】按照响应时间来分配,响应快的优先。
注意:当轮询几率相同时,weight权重 与 访问率 成正比。适用于后端服务器性能不一的情况。