Nginx系列文章-03配置实例

本文介绍了Nginx的配置实例,包括反向代理1和2,实现根据路径跳转到不同端口服务,以及负载均衡配置,详细解析了Nginx如何分摊请求到多个后端服务器,并探讨了Nginx的负载均衡策略如轮询、权重分配和IP哈希。同时,文章还讨论了动静分离的概念和实现方式,以提高网站性能。
摘要由CSDN通过智能技术生成

配置实例

反向代理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中的内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值