nginx

Nginx

详细可以看这个视频:从零开始一步步详细演示前后端分离的项目是如何部署到服务器上的。内容包含:Vue.js和Java Spring Boot项目的运行,配置,构建,打包以及服务器部署;Nginx和Tomcat等服务器软件的配置和项目部署;jar包,war包以及多实例集群代理和负载均衡等方式的项目部署。项目部署实战科普视频教程。

关键作用

反向代理,负载均衡,动静分离

http 80 https 443

权重:就是在一个事务中的占比,就是在轮询的时候

例如 8080端口的weight=3;8080端口的weight=1; 进行反向代理的端口为80

假设对80端口进行了4次请求,那么这四请求将会有三次请求的是8080,1次是8081
他是随机分配的。然后进行轮询

架构:当在架构上碰到什么问题,你就要想到,没有什么是加一层解决不了的问题,一层不过再加一层!

配置文件中的关键配置:nginx.conf
主要配置

   upstream testproxys{
        server 172.20.22.36:50001;
        server 172.20.21.41:50001;
   }
   server {
         listen       8887;
         server_name www.ceshi.com;  #可以通过域名进行请求
         location / {

    #后端的web服务器可以通过X-Forwarded-For获取用户真实ip
                proxy_pass  http://testproxys;      #请求转向后端定义的均衡模块,这个配置就是upstream testproxys,直接找到location/根目录下的proxy_pass,反向代理
                // 下面这四行是必配的,不然请求头可能会少一些参数
                proxy_set_header Host $http_host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header REMOTE-HOST $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
         }
     Location /NginxStatus {
                  stub_status  on;
    }
  }

正向代理

代理客户端,他帮你请求其他的一个外部资源,访问其他服务器 类似于VPN(我不用vpn昂),服务器不知道具体是谁发送的请求

反向代理

代理服务端、让你无感知的访问更好服务,让我们更好的部署
可以在反向代理上 共享一个session

就类似于百度,对于客户来说,我们只看到了 www.baidu.com,请求的永远都是这个域名
但其实他们服务器后台、还部署了多个服务器,那个总的服务器会帮我们请求其他单个的服务器,如果我们想让请求的数据在一个服务器上多接收,可以加大那台服务器的权重客户端不知道具体是哪台服务器提供的服务

要解决Session共享的话,我们建议还是使用redis,不建议使用nginx

他会根据你分配的权重自动帮你在这些服务器之间进行轮询

安装后

经常使用的文件:conf下面的nginx.conf 里面有个 server:监听端口
推荐cmd启动nginx。。。 可以测试访问localhost:80端口,80端口是http默认的端口,可以不写

Nginx常用命令

cd nginx包的位置
#查看是否有nginx
whereis nginx
#启动
./nginx 
停止 (保证安全的前提)
./nginx -s stop
安全退出 (强制停止)
./nginx -s quit
###***********重新加载配置文件
./nginx -s reload
#查看nginx进程
ps anx|grep nginx
# 开启
service firewalld start
# 重启
service firewalld restart
# 关闭
service firewalld stop
# 查看防火墙规则
firewall-cmd --list-all
# 查询端口是否开放
firewall-cmd --query-port=8080/tcp
# 开放80端口
firewall-cmd --permanent --add-port=80/tcp
# 移除端口
firewall-cmd --permanent --remove-port=8080/tcp
#重启防火墙(修改配置后要重启防火墙)
firewall-cmd --reload
# 参数解释
1、firwall-cmd:是Linux提供的操作firewall的一个工具;
2、--permanent:表示设置为持久;
3、--add-port:标识添加的端口;

优势:

  1. 内存小,能力强 1MB、启动容易,几乎可以做到7*24小时不间断运行
  2. 可以承受50000个并发连接数的响应,tomcat可以接收500-600个

Nginx其他常用配置介绍

nginx常用配置参数upstream,主要用于均衡后端多个实例
nginx的upstream支持五种算法分配方式
1.轮询(默认rr)
每个请求按时间顺序逐一分配到后端不同的服务器,如果后端某台服务器down掉,自动剔除,待恢复自动添加上
2.weight权重
指定轮询权重,权重越高处理的请求就越多,weight和访问比率成正比,用于后端服务器性能不均的情况
2.ip hash
每个请求根据访问的ip的hash结果分配,这样每个访客固定访问同一个后端服务器,可以解决sesion的问题,一般用于登录会话
//这样是随机分配的,分配是不均的
4.fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配
5.url hash(第三方)
例如:

 upstream testproxys{
        server  172.20.22.36:50001 weight=1 max_fails=2 fail_timeout=30s;         
        server  172.20.21.41:50001 weight=1 max_fails=2 fail_timeout=30s;
   }

Upstream 的fail_timeout和max_fails参数是用来判断负载均衡upstream中某个server是否失效
// max_fails=2 fail_timeout=30s
在30s与该服务连接尝试失败了两次,则认为该服务已经失效,在接下来30s内,nginx不会将请求分发给失效的服务
失效时间与响应时间无关,不会影响响应时间
查看nginx当前连接数,服务接收的请求,并发数,和状态等信息
设定查看nginx状态的地址

Location /NginxStatus {
     stub_status  on;
}

查看方法
直接在浏览器输入server_name/NginxStatus 即可查看//www.ceshi.com/NginxStatus
例如:

   upstream testproxys{
        server 172.20.22.36:50001;
        server 172.20.21.41:50001;
   }
   server {
         listen       8887;
         server_name www.ceshi.com;  #可以通过域名进行请求
         location / {

    #后端的web服务器可以通过X-Forwarded-For获取用户真实ip
                proxy_pass  http://testproxys;      #请求转向后端定义的均衡模块,这个配置就是upstream testproxys,直接找到location/根目录下的proxy_pass,反向代理
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP  $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
         }
     Location /NginxStatus {
                  stub_status  on;
    }
  }

//location日志说明

$remote_addr, $proxy_add_x_forwarded_for;记录客户端ip,
//$proxy_add_x_forwarded_for#相当于转发,获取客户端ip
$remote_user;记录客户端用户名称

补充一个动静分离
nginx分离动态请求和静态请求,nginx处理静态页面,tomcat、resin处理动态页面。
动静分离可大致分为两种:
1.纯粹把静态文件独立成单独的域名,放在独立的服务器上
2.动态和静态放在一起发布,通过nginx分离
Nginx可以做到动静分离:请求静态页面(图片)都走本地,动态页面,jsp走后端

其他需要知道的
nginx虚拟主机:就是有多少个servername,配置了多少个服务
nginx仅支持http协议,不支持tcp均衡,但可以打补丁,做到tcp,类似于upstream,就是在外面在包装一个tcp

server 里面 location的配置

  // 指定默认的路径配置
  location /{
          // 这是指定默认的一个前端的地址,就是打包解压的位置
          root  /root/workspace/ruoyi-ui/dist;
          // 。。。
          index index.html index.htm;
  }

posted @ 2022-07-29 15:33  没有烦恼的猫猫  阅读(40)  评论(0编辑  收藏  举报