2024-01-17-nginx2

本文详细介绍了Nginx中的反向代理功能,包括如何配置实例1和实例2进行路径映射,以及负载均衡的原理、配置策略(如轮询、weight、ip_hash和fair)和动静分离的应用。还涵盖了SpringBoot项目部署和Nginx的系统管理,如开机启动和配置文件管理。
摘要由CSDN通过智能技术生成

反向代理

1.实例1

        访问 192.168.162.33的时候直接指向的是 https://192.168.162.33:8080

        将http块中将其中的location里的内容进行修改,改成一下模式

location / {
    proxy_pass http://192.168.162.33:8080/;
}

         在浏览器中访问192.168.162.33/menu就是https://192.168.162.33:8080/menu

2.实例2        

        根据访问的路径跳转到不同端口的服务器中

        student ​​​​​:​http://192.168.162.34:8080

        admin ​​​​​​:​http://192.168.162.35:8080

        在serve中添加一个location

 server {
        listen       80;
        server_name  localhost;
        
        location /student/{
           proxy_pass http://192.168.162.34:8080/;
        }
        location /admin/ {
           proxy_pass http://192.168.162.35:8080/;
        }

        当访问192.168.162.33/student/menu时,访问的就是http://192.168.162.34:8080/menu

        location 指令说明 该指令用于匹配 URL。 语法如下:

        location [ = | ~ |~* |^~] uri {

        }

        1、= :用于不含正则表达式的 uri 前,要求请求字符串与 uri 严格匹配,如果匹配 成功,就停止继续向下搜索并立即处理该请求。

        2、~:用于表示 uri 包含正则表达式,并且区分大小写。

        3、~*:用于表示 uri 包含正则表达式,并且不区分大小写。

        4、^~:用于不含正则表达式的 uri 前,要求 Nginx 服务器找到标识 uri 和请求字 符串匹配度最高的 location 后,立即使用此 location 处理请求,而不再使用 location 块中的正则 uri 和请求字符串做匹配。 注意:如果 uri 包含正则表达式,则必须要有 ~ 或者 ~* 标识。

负载均衡

        Nginx之所以要做负载均衡,是因为在高并发访问的情况下,单台服务器可能无法承受大量的请求,导致网站响应速度变慢或者直接崩溃。而通过负载均衡技术,可以将流量分发到多台服务器上,使得每台服务器承担的压力减小,从而提高整个系统的可用性和性能。

        准备工作:

  1. 两个tomcat服务器
  2. 将服务器中的页面改成不一样的用于区分
  3. 验证两个tomcat是否能够正常的启动
  4. 配置nginx

        修改nginx.conf文件

        upstream 上游

#要放到http块中,serve块外
upstream aaa 
        {
                #添加服务器到负载均衡
            server 192.168.162.34:8080 ;         
            server 192.168.162.35:8080 ;
         }

        serve中的location

location / {
          
            #反向代理的地址
            proxy_pass http://aaa/;
        }

        这样便是完成了负载均衡,而负载均衡也有他的配置策略

        1、轮询(默认)

        每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。

        2、weight

        weight 代表权重默认为 1,权重越高被分配的客户端越多

        指定轮询几率,weight 和访问比率成正比,用于后端服务器性能不均的情况

upstream aaa{
server 192.168.162.34:8080 weight=10;         
server 192.168.162.35:8080 weight=100;
}

        3、ip_hash

        每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器,可以解决 session 的问题。 例如:

upstream aaa{

ip_hash;

server 192.168.162.34:8080 ;

server 192.168.162.35:8080 ;

}

        4、fair(第三方)

        按后端服务器的响应时间来分配请求,响应时间短的优先分配。

upstream aaa{

fair;

server 192.168.162.34:8080 ;

server 192.168.162.35:8080 ;

}

动静分离

        Nginx 动静分离简单来说就是把动态跟静态请求分开,不能理解成只是单纯的把动态页面和 静态页面物理分离。严格意义上说应该是动态请求跟静态请求分开,可以理解成使用 Nginx 处理静态页面,Tomcat 处理动态页面。动静分离从目前实现角度来讲大是纯粹把静态文件独立成单独的域名,放在独立的服务器上,也是目前主流推崇的方案;

配置静态资源:

        约定:静态资源 location / {}

location / {  
            root   /usr/tmp/dist; # vue项目所在的文件夹的路径
            index  index.html;
        } 

        当你一定要给静态资源命名路径时要注意

location /dist {
            root   /usr/pro;
            index  index.html index.htm;
        }
//  location 路径
路径一定要包含root里面
访问dist的时候 ip:80/root目录/dist

location /aaa {
            alias   /usr/pro/dist;
            index  index.html index.htm;
        }

alias 访问aaa的时候 其实访问的是 /usr/pro/dist

        部署springboot项目

        在其他虚拟机启动springboot项目,然后根据前面的配置反向代理时的步骤配置即可

配置nginx开机启动

        切换到/lib/systemd/system/目录,创建nginx.service文件

        cd /lib/systemd/system/

        vim nginx.service

        添加以下内容

[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx  -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s  reload
ExecStop=/usr/local/nginx/sbin/nginx  -s stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target

        保存并退出之后,使配置文件生效

        systemctl daemon-reload

执行systemctl enable nginx.service使nginx开机启动
#开机自启动
systemctl enable nginx.service
#停止开机自启动
systemctl disable nginx.service
#查询当前状态
systemctl status nginx.service
#启动服务
systemctl start nginx.service
#重新启动服务
systemctl restart nginx.service
#停止服务
systemctl stop nginx.service
#重新加载配置
systemctl reload nginx.service

  • 22
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值