Java技术栈 —— Nginx的使用

Java技术栈 —— Nginx的使用

  • 一、认识Nginx
  • 二、搭建Nginx环境
    • 2.1 在Ubuntu上安装Nginx
  • 三、使用Nginx
    • 3.1 配置负载均衡(HTTP)

一、认识Nginx

企业需要运行多个相同的副本,并将负载分散在整个系统集群上,为了高性能的负载均衡,引入了Nginx代理,也就是说Nginx可以理解成一套负载均衡的解决方案

参考文章或视频链接
《Nginx官网》

二、搭建Nginx环境

2.1 在Ubuntu上安装Nginx

# (1)更新已配置源的软件包信息
apt-get update
# (2)安装一些有助于配置官方 NGINX 软件包仓库的软件包:
apt install -y curl gnupg2 ca-certificates lsb-release debian-archive-keyring
# (3)下载并保存 NGINX 签名密钥
curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor | tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
# (4)使用 lsb_release 设置定义操作系统和版本名称的变量,然后创建一个 apt 源文件
OS=$(lsb_release -is | tr '[:upper:]' '[:lower:]')
RELEASE=$(lsb_release -cs)
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/${OS} ${RELEASE} nginx" | tee /etc/apt/sources.list.d/nginx.list
# (5)再次更新软件包信息,然后安装 NGINX
apt-get update
apt-get install -y nginx
# 启动Nginx
nginx
# 停止Nginx
nginx -s stop
# 重新加载配置
nginx -s reload

三、使用Nginx

3.1 配置负载均衡(HTTP)

配置负载均衡是Nginx最直接的功能了(准确的说是HTTP负载均衡,因为TCPUDPHTTP一样都是应用层协议,也可以配置负载均衡),这也是我们入门Nginx的首要目的。首先,假设你用SpringBoot搭了一个简单的Web应用,然后分别启动在99999998端口,那么可以认为这是一个简单的集群,提供同样的服务,但是作为用户肯定不希望记忆这种东西,既然提供同样的服务,那么地址就应该只有一个,下面是将负载分发到两台或多台 HTTP 服务器的配置示例。

假设这是你的SpringBoot项目的一个服务接口。

@RestController
public class demoController {

    public static int count = 0;
    @RequestMapping("/helloworld")
    public String hello_world(){
        System.out.println("Service is visited."+count);
        count++;
        return "hello world";
    }
}
server:
  port: 9999
  servlet: # 项目访问地址
    context-path: /

这是你的Nginx配置。

# /etc/nginx/nginx.conf。注意和/etc/nginx/conf.d/default.conf做区分
http{
	upstream demo {					# upstream代码块
	 	server 127.0.0.1:9999 weight=1;
	 	server 127.0.0.1:9998 weight=2; # 向这个配置所在服务器传输两倍的请求,weight默认值为1
	 	server 127.0.0.1:8000 backup;   # backup备用服务器,以便在上面两台主服务器不可用时发挥作用
	}
	server {
		listen 8011;
		server_name localhost;
	 	location / {
			root   /usr/share/nginx/html;
			index  index.html index.htm;
			proxy_pass http://demo;
	 	}
	}
}

配置好后保存并nginx -s reload重新加载,然后在99999998端口分别启动两个应用程序,那么之前我们访问的是http://127.0.0.1:9999/helloworldhttp://127.0.0.1:9998/helloworld,现在只需要输入 http://127.0.0.1:8011/helloworldhttp://localhost:8011/helloworld 即可,就像这样。

参考文章或视频链接
[1] 《Idea启动多个SpringBoot项目的3种方案》
[2] 《IDEA中run Dashboard面板如何出现?实现批量运行微服务》
[3] 《Nginx实现负载均衡配置》

你可能感兴趣的:(Java技术栈,nginx)