配置实例
反向代理1
这个是最简单的反向代理过程。
实现效果
打开浏览器,输入地址后,跳转到linux中浏览器的某个页面。视频以tomcat为例。这里我并没有进行安装。主要为了用flask。所以以flask为例,只是端口不同。
具体实现
准备工作
1.安装tomcat并启动tomcat。
2.对外开放访问的端口。
firewall-cmd --add-port=8080/tcp --permanent
firewall-cmd -reload
查看已开放端口
firewall-cmd --list -all
3.直接访问8080来测试。
访问过程分析
具体配置
1.host映射。其实这一步可以有可以没有,主要是把你访问的域名和ip地址绑定。
2.在nginx进行反向代理配置
sudo vim /etc/nginx/sites-available/default
在其中进行修改
修改server_name为ip地址,在location中添加proxy_pass 进行转发
然后
使用
sudo nginx -t
查看是否配置成功
使用
sudo nginx -s reload
重启nginx
然后即可实现反向代理。
经过测试,其实只需要在location中添加一个proxy_pass变量即可,其他不用改变,重启nginx服务即可实现反向代理的过程。
3.测试
反向代理2
实现效果
使用反向代理,根据访问的路径跳转到不同的端口的服务中。nginx监听端口为9001。比如
访问http://ip:9001/edu/ 则会跳转到 127.0.0.1:8080
访问http://ip:9001/vod/ 则会跳转到127.0.0.1:8081
具体实现
准备工作
1.准备两个服务。服务并不重要,重要的是实现的过程。这里我也没有准备,直接看视频操作把。
2.创建文件夹和测试页面。这个是在tomcat中实现的。
具体配置
1.找到nginx的配置文件进行反向代理。
直接添加server规则去监听9001
server{
listen 9001;
server_name ip地址;
# 如果访问路径中有edu就会转发到8080端口
location ~ /edu/ {
proxy_pass http://127.0.0.1:8080;
}
# 如果访问路径中有vod就会转发到8081端口
location ~ /vod/ {
proxy_pass http://127.0.0.1:8081;
}
}
2.开放对应端口号。
然后重启nginx服务器即可实现。
测试
自行测试。理论上是没错的。
负载均衡
实现效果
浏览器输入地址访问某个页面,将负载平均分摊到8080和8081端口中。
具体实现
准备工作
1.准备两个tomcat服务器
2.在两个tomcat中的webapps目录中创建同一名称的文件夹,在文件夹中创建同一页面a.html进行测试。
具体配置
http{
# 表示进行负载均衡服务器的列表
upstream myserver{
# ip_hash;
server ip:8080 weight=1;
server ip:8081 weight=1;
}
server{
listen 80;
server_name ip;
location / {
proxy_pass http://myserver;
proxy_connect_timeout 10;
}
}
}
添加upstream myserver。在其中添加负载均衡的服务器。可以加weight也可以不加。然后在location中添加的是 http://myserver 就是upstream后面的这个名称。然后重启nginx即可。
测试
自行测试。会把请求分发到不同的服务器中。
Nginx分配服务器的策略
轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down了,则自动剔除。
weight
weight代表权重。默认为1,权重越高被分配的客户端越多。
upstream myserver{
server ip:8080 weight=5;
server ip:8081 weight=10;
}
代表8081的访问权重是8080的1倍
ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题
upstream myserver{
ip_hash;
server ip:8080;
server ip:8081;
}
fair(第三方)
按照后端服务器的响应时间来分配请求,响应时间短的优先分配。
upstream myserver{
server ip:8080;
server ip:8081;
fair;
}
动静分离
简单来说就是把动态请求和静态请求分开。并不是单纯的把动态页面和静态页面物理分离,而是把请求分离。可以理解为使用nginx处理静态页面,tomcat处理动态页面。目前从实现角度来说有两种实现方式。
第一种:把静态文件独立成单独的域名,放在独立服务器上。比较常用的是这种方案。
第二种:把动态和静态文件混合在一起,通过nginx来分开。
通过location来指定不同的后缀名来实现不同的请求转发。通过expires参数来进行设置浏览器的缓存过期时间,减少与服务器之间的请求和流量。expires就是设定一个过期时间,然后我们无需服务端验证,直接通过服务器自身来确定是否过期,不会产生额外的访问流量。
比如设置一个3d。表示3天之内访问这个url,发送一个请求,比对服务器该文件最后更新时间有没有变化,则不会从服务器抓取,返回304,如果有修改则会重新下载修改后的文件,返回200。
实现效果
动静分离。通过nginx访问
具体实现
准备工作
1.准备静态资源
资源路径:/data/www/ 和 /data/image/
2.使用之前的动态资源
具体配置
1.在配置文件中进行配置
http{
server{
listen 80;
server_name ip;
location /www {
root /data/; # 静态资源路径根目录
index index.html index.htm;
}
location /image {
root /data/; # 静态资源路径根目录
autoindex on; # 列出访问目录
}
}
}
测试
直接在浏览器访问路径。
http://ip/image/ 因为开启了autoindex 会把所有的内容都显示出来。
http://ip/www/a.html 会显示html中的内容。