前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >手把手搭建Nginx负载均衡+反向代理

手把手搭建Nginx负载均衡+反向代理

原创
作者头像
小明爱吃火锅
发布2023-11-21 16:04:38
5830
发布2023-11-21 16:04:38
举报
文章被收录于专栏:小明说Java

一:需求背景

Nginx相信大家应该不陌生吧!是一个高性能web服务器,可以做负载均衡或者是反向代理,比如,把静态页面直接部署到到html,实现动静分离,一个服务器部署多个服务,缓解服务压力,等等,都可以利用Nginx实现。

1.负载均衡

这个理解比较简单,其实就是压力分摊,一个工程部署多个节点,也就是传说中的分布式,这样对于所有请求不会全部落到一个节点上,而造成某个节点压力过大。nginx在配置上游服务就可以设置对应负载权重。

2.反向代理

这个可能不太好理解,可以先看一下图:

也就是,用户就访问了一个服务器域名,Nginx会帮我们转发到实际访问的ip或者端口,比如对于微服务工程,用户访问:www.mall.com/product,但是可能会转发到product-service这个工程的主机ip,这就是Nginx给我们处理的,反向代理。

而正向代理,就不会去转发,处理请求也是域名对应的ip主机。

二:Nginx负载均衡+反向代理实战

1.Nginx配置结构

首先,在开发配置修改前,我们简单了解一下Nginx的结构,对于Windows版本,官网下载,文件目录结构如下:

我们主要关注的是conf文件下的配置文件nginx.conf,这个文件也是我们后面要修改配置负载均衡和反向代理,后面对于其他Nginx配置也是修改这个文件

nginx.conf文件的结构:主要关注server块,一个服务对应一个sever块

2.代码实战

使用idea开发工具随便讲一个springboot工程,本文主要是介绍Nginx的配置,工程服务内容可以不用在意,不过可以写一个controller请求,响应提示我们请求了那个服务器端口,来验证负载均衡。保证工程正常启动,配置启动项,在VM配置JVM启动端口,指定服务端口,我们可以配置两个服务端口,9901和9902,来模拟同个服务部署到两个机器

Nginx修改conf配置文件:

代码语言:javascript
复制
#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;


    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    # 配置上游服务器,负载均衡
    upstream mynginx{
        server localhost:9901;
		server localhost:9902;
    }

    server {
        listen       8801;
        server_name  localhost;


        location / {
            proxy_pass http://mynginx;
            index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

    }
}

配置说明:

网络请求到localhost:8801,会反向代理到上游服务器,也就是upstream mynginx,上游服务配置了多个,会默认根据轮询的方式进行请求。

程序效果:我们只访问http://localhost:8801/inventory/sale,但是实际上9901和9902两个端口会分担请求,至此我们就完成了负载均衡。

三:总结

本文主要是介绍了Nginx负载均衡和反向代理的hallo world,算是比较基础入门,比较适合新手开始,能够加深对Nginx的理解和使用。其实Nginx还能做很多事情,后续会继续发文,欢迎大家评论区留言和订阅。

​我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一:需求背景
    • 1.负载均衡
      • 2.反向代理
      • 二:Nginx负载均衡+反向代理实战
        • 1.Nginx配置结构
          • 2.代码实战
          • 三:总结
          相关产品与服务
          负载均衡
          负载均衡(Cloud Load Balancer,CLB)提供安全快捷的四七层流量分发服务,访问流量经由 CLB 可以自动分配到多台后端服务器上,扩展系统的服务能力并消除单点故障。轻松应对大流量访问场景。 网关负载均衡(Gateway Load Balancer,GWLB)是运行在网络层的负载均衡。通过 GWLB 可以帮助客户部署、扩展和管理第三方虚拟设备,操作简单,安全性强。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档