保证已经正常安装了JDK,并打包完成了前端代码和后端代码
1、安装Nginx
1、安装nginx的依赖库
yum -y install gcc-c++ zlib-devel openssl-devel libtool
2、下载解压nginx
wget http://nginx.org/download/nginx-1.21.6.tar.gz
tar -zxvf nginx-1.21.6.tar.gz
13、nginx重启
./nginx -s reload
2、配置Nginx的conf文件,包含了域名和SSL证书的配置
server {
listen 80;
server_name www.xxxx.com(你的域名);
return 301 https://$server_name$request_uri;
location / {
root /home/server/dist(vue打包的前端代码文件路径);
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
# HTTPS server
server {
listen 443 ssl;
server_name www.xxxx.com(你的域名);
ssl_certificate /usr/local/nginx/cert/www.xxxx.com_bundle.pem(SSL证书的per);
ssl_certificate_key /usr/local/nginx/cert/www.xxxx.com.key(SSL证书的key);
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root /home/server/dist(vue打包的前端代码文件路径);
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
}
3、Nginx的负载均衡配置
1、Nginx 提供了多种负载均衡算法,您可以根据特定的用例进行选择,也可以对您选择的算法进行配置。以下负载均衡方法可用于上游 HTTP、TCP 和 UDP 池:
(1)轮询:最常用的负载均衡方式
轮询是默认的负载均衡方法,它按照上游池中服务器列表的顺序分发请求。当上游服务器的容量变化时,您还可以考虑使用加权轮询。权重的整数值越高,服务器在轮询中的优势就越大。权重背后的算法只是加权平均值的统计概率。
(2)最少连接:
此方法通过将当前请求代理到打开连接数最少的上游服务器实现负载均衡。与轮询 一样,在决定将连接发送到哪台服务器时,最少连接也会考虑权重。其指令名称是 least_conn。
(3)最短时间:
该算法仅在 NGINX Plus 中提供,与最少连接算法类似,它将请求代理到当前连接数最少的上游服务器,但首选平均响应时间最短的服务器。此方法是最复杂的负载均衡算法之一,能够满足高性能 Web 应用的需求。最短时间在最少连接的基础上进行了优化,因为少量连接并不一定意味着最快的响应。使用此算法时,切记要考虑服务请求时间的统计差异。有些请求可能本身就需要更多的处理,请求时间也就 更长,因而拉宽了统计的范围。请求时间长并不一定意味着服务器性能欠佳或超负荷工作。但是需要进行更多处理的请求可以考虑使用异步工作流。用户必须为此 指令指定 header 或 last_byte 参数。当指定 header 时,使用接收响应头的时间; 当指定 last_byte 时,使用接收完整响应的时间。其指令名称是 least_time。
(4)通用哈希:
管理员使用请求或运行时给定的文本、变量或两者的组合定义哈希值。NGINX 能 够为当前请求生成哈希值并将其放在上游服务器上,从而在这些服务器之间分发负载。当您希望更好地控制请求的发送位置或确定哪台上游服务器最有可能缓存数据时,此方法就会派上用场。请注意,当从池中添加或删除服务器时,将重新分发哈希请求。此算法有一个可选的参数:consistent,它能够将重新分发带来的影响最小化。其指令名称是 hash。
(5)随机:
该方法用于指示 NGINX 从组中随机选择一台服务器,同时考虑服务器的权重。可 选的 two [method] 参数指示 NGINX 随机选择两台服务器,然后使用提供的负载 均衡方法对两者均匀地分发请求。默认情况下,如果传输的参数只有 two,没有 method,则使用 least_conn 方法。随机负载均衡的指令名称是 random。
(6)IP 哈希:
此方法仅适用于 HTTP。IP 哈希算法使用客户端 IP 地址作为哈希。IP 哈希与通用哈希存在细微的不同,前者使用 IPv4 地址的前三个八进制位或整个 IPv6 地址,而后者使用的是远程变量。当会话状态十分重要,但又无法通过应用的共享内存进行 处理时,此方法可确保客户端始终被代理到同一上游服务器(只要服务器可用)。 此方法在分发哈希值时也考虑了 weight 参数。其指令名称是 ip_hash。
2、Nginx三大负载均衡:http、tcp、udp
(1)HTTP负载均衡:将负载分发到两台或多台 HTTP 服务器
在 NGINX 的 HTTP 模块内使用 upstream 代码块对 HTTP 服务器实施负载均衡:
upstream backend {
server 10.10.12.45:80 weight=1;
server app.example.com:80 weight=2;
server spare.example.com:80 backup;
}
server {
location / {
proxy_pass http://backend;
} }
该配置对端口 80 的两台 HTTP 服务器实施负载均衡,然后再将另一台服务器定义为 backup,以便在两台主服务器不可用时发挥作用。
weight 参数指示 NGINX 向第二台服务器传输两倍的请求,它的默认值为 1。
(2)TCP负载均衡:将负载分发到两台或多台 TCP 服务器
在 NGINX 的 stream 模块内使用 upstream 代码块对 TCP 服务器实施负载均衡:
stream {
upstream mysql_read {
server read1.example.com:3306 weight=5;
server read2.example.com:3306;
server 10.10.12.34:3306
server {
listen 3306;
proxy_pass mysql_read;
}
}
backup;
}
此示例中的 server 代码块指示 NGINX 侦听 TCP 端口 3306,并对两个 MySQL 数据库 读取副本实施负载均衡,同时将另一台服务器定义为 backup,以便在主服务器崩溃时传输流量。
此配置不会被添加到 conf.d 文件夹中,因为该文件夹包含在 http 代码块中;您应该另行创建名为 stream.conf.d 的文件夹,打开 nginx.conf 文件中的 stream 代码块,添加新文件夹以支持 stream 配置。示例见下。
在 /etc/nginx/nginx.conf 配置文件中:
user nginx;
worker_processes auto;
pid /run/nginx.pid;
stream {
include /etc/nginx/stream.conf.d/*.conf;
}
名为 /etc/nginx/stream.conf.d/mysql_reads.conf 的文件可能包含以下配置:
upstream mysql_read {
server read1.example.com:3306 weight=5;
server read2.example.com:3306;
server 10.10.12.34:3306
server {
listen 3306;
proxy_pass mysql_read;
}
(3)UDP负载均衡:将负载分发到两台或多台 UDP 服务器
在 NGINX 的 stream 模块内使用 upstream 代码块(定义为 udp)对 UDP 服务器实施 负载均衡:
stream {
upstream ntp {
server ntp1.example.com:123 weight=2;
server ntp2.example.com:123;
}
server {
listen 123 udp;
proxy_pass ntp;
}
}
这部分配置对使用 UDP 协议的两台上游(upstream)网络时间协议(NTP)服务器实施 了负载均衡。UDP 负载均衡的指定非常简单,只需使用 listen 指令中的 udp 参数便可。
如果进行负载均衡的服务需要在客户端和服务器之间来回发送多个数据包,则可以 指定 reuseport 参数。例如,OpenVPN、互联网语音协议(VoIP)、虚拟桌面解决 方案和数据报传输层安全(DTLS)都是这种类型的服务。下面举例说明了如何使用 NGINX 处理 OpenVPN 连接并将其代理到本地运行的 OpenVPN 服务:
stream {
server {
listen 1195 udp reuseport;
proxy_pass 127.0.0.1:1194;
}
}