本文已参与「新人创作礼」活动,一起开启掘金创作之路
一、安装
1.1 下载
下载地址 地址,本次下载的是nginx-1.20.1稳定版本,下载完毕后拖入服务器 /opt/文件夹里
1.2 安装必备的环境
-
gcc安装
安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装
yum -y install gcc gcc-c++ autoconf automake -
zlib安装 PCRE pcre-devel 安装 OpenSSL 安装
zlib 库提供了很多种压缩和解压缩的方式, nginx 使用 zlib 对 http 包的内容进行 gzip ,所以需要在 Centos上安装 zlib 库。
yum -y install zlib zlib-devel openssl openssl-devel pcre-devel
1.3 nginx配置安装并启动
解压nginx
tar -zxvf nginx-1.20.1.tar.gz
进入ngnix目录,执行以下命令, 注意–prefix等号后面的一串为 /opt/nginx-1.20.1 nginx目录
cd /opt/nginx-1.20.1
./configure --prefix=/opt/nginx-1.20.1 --with-http_stub_status_module --with-http_ssl_module
安装命令
make && make install
查看nginx 版本
./sbin/nginx -v
常见nginx的log文件夹
mkdir logs
到此, nginx安装完成 启动nginx启动sbin目录下的nginx
启动nginx
./sbin/nginx
查看nginx进程,可以根据IP访问进行测试
ps -ef | grep nginx
二、常用命令
//启动nginx [root@iz2zedkdcntqh9bniwae18z sbin]# ./sbin/nginx//停止 [root@iz2zedkdcntqh9bniwae18z sbin]# ./sbin/nginx -s stop //重启[root@iz2zedkdcntqh9bniwae18z sbin]# ./sbin/nginx -s reload//查看配置文件知否正确[root@iz2zedkdcntqh9bniwae18z sbin]# ./sbin/nginx -t//详情 [root@iz2zedkdcntqh9bniwae18z sbin]# ps -ef | grep nginx
三、负载均衡
3.1 配置负载均衡
现在有4个机器分别为192.168.67.67,192.168.67.68,192.168.67.69,192.168.67.70,67机器上有个nginx,其他三个机器上装上tomcat,四个机器的tomcat
<%@ page session="true" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %> <body> <h1>Welcome to 豆豆把VOB</h1> <h3><%=session.getId() %></h3> <h3><%=request.getLocalAddr() %>--<%=request.getLocalPort() %></h3> <h3><%=request.getRemoteAddr() %></h3> </body>
启动三个tocmat
/opt/apache-tomcat-8.5.70/bin/startup.sh
修改 /opt/nginx-1.20.1/conf,配置如下,添加了upstream项修改了location的数据
http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; upstream amoqi{ server 192.168.67.68:8080; server 192.168.67.69:8080; server 192.168.67.70:8080; } server { listen 80; server_name localhost; location / { proxy_pass http://amoqi; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }}
重启nginx
./sbin/nginx -s reload
重复访问url http://192.168.67.67/ ,发现负载到不同的服务器上了
3.2 负载均衡策略
3.2.1 请求轮询
- 依次转发给配置的服务器
3.2.2 增加权重
-
使用服务器的权重,谁的权重越大,分发到的请求越多
upstream amoqi{ server 192.168.67.68:8080 weight=2; server 192.168.67.69:8080 weight=3; server 192.168.67.70:8080 weight=1;}
3.2.3 最少连接数
-
在连接负载最少的情况下,nginx会避免将过多的请求发放给繁忙的服务器,而将新的请求分发给不太繁忙的服务器,避免服务器过载
upstream amoqi{ least_conn; server 192.168.67.68:8080; server 192.168.67.69:8080; server 192.168.67.70:8080;}
3.2.4 IP hash
-
确保来自同一客户端的请求将始终定向到同一服务器,除非服务器不可用
upstream amoqi{ ip_hash; server 192.168.67.68:8080; server 192.168.67.69:8080; server 192.168.67.70:8080;}
四、配置资源静态化
4.1 配置静态资源
在被转发的服务器上配置静态资源
<body> <h1>Welcome to 豆豆把VOB</h1> <h3><%=session.getId() %></h3> <h3><%=request.getLocalAddr() %>--<%=request.getLocalPort() %></h3> <h3><%=request.getRemoteAddr() %></h3> <img src="/static/img/ms.jpg" height="200px"/></body>
## 在Nginx的html文件夹下创建/static/img文件夹,放入图片ms.jpg## 放入locationlocation ^~ /static/ { root html;}
4.2 路径路由规则
location = / {精确匹配,必须是127.0.0.1/#规则A}location = /login {精确匹配,必须是127