Linux系统
- 一. Nginx介绍
- 二. Nginx作用
- 1. 反向代理
- 2. 正向代理
- 3. vue部署
- 三. Nginx部署
- 1. nginx本地安装
- 1.1 下载
- 1.2 启动nginx
- 2. nginx的配置文件
- 3. 反向代理
- 3.1 图片代理
- 3.2 域名代理
- 4. 负载均衡
- 4.1 轮询策略
- 4.2 权重策略
- 4.3 负载均衡策略--IPHASH
- 5. nginx配置文件其他关键字说明
- 5.1 关闭服务器_down属性
- 5.2 标识备用机_backup属性
- 5.3 设定最大的失败次数和失败的超时时间
一. Nginx介绍
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。
其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
特点:
1.占用内存少 tomcat服务器启动200M Nginx服务器启动时 2M
2.并发能力强 tomcat并发能力150-200左右 Nginx并发能力 3-5万/秒
3.Nginx主要的功能做反向代理
4.Nginx可以作为负载均衡服务器使用
二. Nginx作用
1. 反向代理
视频: 4.7a.2h30min
反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的地址,也无须在用户端作任何设定。
反向代理服务器通常可用来作为Web加速,即使用反向代理作为Web服务器的前置机来降低网络和服务器的负载,提高访问效率。
1. 反向代理服务器是介于用户和服务器之间的
2. 用户直接访问代理服务器,以为代理服务器就是真实的服务器.
3. 用户不清楚真实的服务器到底是谁.
4. 反向代理是服务器端代理.保护了真实的服务器信息.
5. 反向代理主要的作用 访问服务器获得服务器数据的.
2. 正向代理
正向代理,意思是一个位于客户端和原始服务器(origin server)之间的服务器,
为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理。
1.正向代理服务器介于用户和目标服务器之间
2.用户非常清楚的知道服务器网址是谁.
3.服务器端不清楚真实的用户是谁.
4.正向代理一般都是客户端代理.保护了用户的信息.
5.正向代理一般都是为了获取网络资源.例如路由器
3. vue部署


server {
listen 80;
server_name zldalm;
location / {
root project/alm;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
}
三. Nginx部署
1. nginx本地安装
1.1 下载

下载windows版本

1.2 启动nginx
创建快捷指令bat文件,代码如下:
脚本1:
@echo off
rem 提供Windows下nginx的启动,重启,关闭功能
echo ==================begin========================
cls
::ngxin 所在的盘符
set NGINX_PATH=D:
::nginx 所在目录
set NGINX_DIR=D:\nginx-1.23.1\
color 0a
TITLE Nginx 管理程序增强版
CLS
echo.
echo. ** Nginx 管理程序 ***
echo. *** create 2017-09-22 ***
echo.
:MENU
echo. ***** nginx 进程list ******
::tasklist|findstr /i "nginx.exe"
tasklist /fi "imagename eq nginx.exe"
echo.
if ERRORLEVEL 1 (
echo nginx.exe不存在
) else (
echo nginx.exe存在
)
echo.
::*************************************************************************************************************
echo.
echo. [1] 启动Nginx
echo. [2] 关闭Nginx
echo. [3] 重启Nginx
echo. [4] 刷新控制台
echo. [5] 重新加载Nginx配置文件
echo. [6] 检查测试nginx配置文件
echo. [7] 查看nginx version
echo. [0] 退 出
echo.
echo.请输入选择的序号:
set /p ID=
IF "%id%"=="1" GOTO start
IF "%id%"=="2" GOTO stop
IF "%id%"=="3" GOTO restart
IF "%id%"=="4" GOTO MENU
IF "%id%"=="5" GOTO reloadConf
IF "%id%"=="6" GOTO checkConf
IF "%id%"=="7" GOTO showVersion
IF "%id%"=="0" EXIT
PAUSE
::*************************************************************************************************************
::启动
:start
call :startNginx
GOTO MENU
::停止
:stop
call :shutdownNginx
GOTO MENU
::重启
:restart
call :shutdownNginx
call :startNginx
GOTO MENU
::检查测试配置文件
:checkConf
call :checkConfNginx
GOTO MENU
::重新加载Nginx配置文件
:reloadConf
call :checkConfNginx
call :reloadConfNginx
GOTO MENU
::显示nginx版本
:showVersion
call :showVersionNginx
GOTO MENU
::*************************************************************************************
::底层
::*************************************************************************************
:shutdownNginx
echo.
echo.关闭Nginx......
taskkill /F /IM nginx.exe > nul
echo.OK,关闭所有nginx 进程
goto :eof
:startNginx
echo.
echo.启动Nginx......
IF NOT EXIST "%NGINX_DIR%nginx.exe" (
echo "%NGINX_DIR%nginx.exe"不存在
goto :eof
)
%NGINX_PATH%
cd "%NGINX_DIR%"
IF EXIST "%NGINX_DIR%nginx.exe" (
echo "start '' nginx.exe"
start "" nginx.exe
)
echo.OK
goto :eof
:checkConfNginx
echo.
echo.检查测试 nginx 配置文件......
IF NOT EXIST "%NGINX_DIR%nginx.exe" (
echo "%NGINX_DIR%nginx.exe"不存在
goto :eof
)
%NGINX_PATH%
cd "%NGINX_DIR%"
nginx -t -c conf/nginx.conf
goto :eof
::重新加载 nginx 配置文件
:reloadConfNginx
echo.
echo.重新加载 nginx 配置文件......
IF NOT EXIST "%NGINX_DIR%nginx.exe" (
echo "%NGINX_DIR%nginx.exe"不存在
goto :eof
)
%NGINX_PATH%
cd "%NGINX_DIR%"
nginx -s reload
goto :eof
::显示nginx版本
:showVersionNginx
echo.
%NGINX_PATH%
cd "%NGINX_DIR%"
nginx -V
goto :eof脚本2:
@echo off
rem @author zhaohy
chcp 65001
--- nginx安装目录----
set NGINX_DIR=D:\nginx-1.21.1\
:INFO
echo.
echo --------------------- 进程列表 ---------------------
tasklist|findstr /i "nginx.exe"
if errorlevel 1 echo nginx未启动
echo --------------------- 进程列表 ---------------------
echo.
echo. 1. 启动Nginx
echo. 2. 关闭Nginx
echo. 3. 重启Nginx
echo. 4. 退出
echo.
echo 请输入功能序号:
set /p id=
if "%id%"=="1" goto START
if "%id%"=="2" goto STOP
if "%id%"=="3" goto RESTART
if "%id%"=="4" exit
pause
:START
if exist "%NGINX_DIR%nginx.exe" (
cd /d %NGINX_DIR%
start "" nginx.exe
echo 启动成功
) else (
echo "%NGINX_DIR%nginx.exe不存在"
)
goto INFO
:STOP
taskkill /F /IM nginx.exe > nul
echo 已关闭所有nginx进程
goto INFO
:RESTART
taskkill /F /IM nginx.exe > nul
if exist "%NGINX_DIR%nginx.exe" (
cd /d %NGINX_DIR%
start "" nginx.exe
) else (
echo "%NGINX_DIR%nginx.exe不存在"
)
echo 已重启
goto INFO
goto :eof测试 访问: localhost

cmd常用命令:
进入nginx目录
1).启动命令 start nginx
2).重启命令 nginx -s reload
3).关闭命令 nginx -s stop2. nginx的配置文件

在http{}协议内添加
#服务器设置 改
#server 代表反向代理的具体服务信息
server {
#监听端口号
listen 80;
# 监听的服务名称,即监听浏览器访问 localhost:80
server_name localhost;
#反向代理的配置,获取用户指定的请求之后,将请求转向到什么位置
# / 请求访问的根目录
location / {
# root关键字 指定反向代理文件目录
root html;
# index关键字 指定默认跳转页面
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}这里的root html指的是nginx-1.21.1目录下的html文件夹

index index.html index.htm; 和 error_page 500 502 503 504 /50x.html; 指的是nginx-1.21.1\html目录下的index.html

3. 反向代理
3.1 图片代理
需求: 客户端访问D:\images目录下的profile-img.jpg文件,而客户端只知道文件名profile-img.jpg和网址,
即客户端访问http:///profile-img.jpg时,展示图片!!!

在http{}协议内添加
# 配置图片服务器代理
server{
# 监听:80,即当客户端访问 网址端口号为 80 上传图片,nginx将图片保存到 D:\images;
listen 80;
server_name ;
location / {
# 配置图片服务器代理
root D:\images;
#root /usr/local/src/image; # linux环境下图片保存路径
}
}测试

3.2 域名代理

给http://192.168.126.1:8091配置反向代理,即当访问www.hy.com时跳转到登录页面
# 域名代理
server{
# 客户端信息
listen 80;
server_name www.hy.com;
location / {
# 服务端信息
proxy_pass http://192.168.126.1:8091;
}
}修改host文件

测试

4. 负载均衡
host文件

为了方便测试,创建查询端口号访问
测试添加端口号显示MsgController
package com.pearadmin.business.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 客户端查询系统配置
*/
@RestController
public class MsgController {
@Value("${server.port}")
private int port;
@RequestMapping("/getPort")
public String getMsg() {
return "当前服务器端口号:" + port;
}
}
准备工作: 创建三个端口号不同,其他相同的项目jar包。8090,9091,9092发布

4.1 轮询策略
不推荐,测试推荐
server {
listen 80;
server_name www.hy.com;
location / {
proxy_pass http://hyShip;
}
}
#配置域名的代理之--配置多台Tomcat服务器 轮询策略
upstream hyShip {
ip_hash; # 登录问题等==>让用户与服务器进行绑定,缺点是使用ip_hash指令无法保证后端服务器的负载均衡==>redis做中间件
server 127.0.0.1:8090 ; # weight设置并发量 max_fails最大失败次数 fail_timeout失败超时时间
server 127.0.0.1:8091 ;
server 127.0.0.1:8092 ;
}4.2 权重策略
server {
listen 80;
server_name www.hy.com;
location / {
proxy_pass http://hyShip;
}
}
#配置域名的代理之--配置多台Tomcat服务器 轮询策略 权重5:3:2
upstream hyShip {
ip_hash; # 让用户与服务器进行绑定,缺点是使用ip_hash指令无法保证后端服务器的负载均衡==>redis做中间件
server 127.0.0.1:8090 weight=5; # weight设置并发量 max_fails最大失败次数 fail_timeout失败超时时间
server 127.0.0.1:8091 weight=3;
server 127.0.0.1:8092 weight=2;
}4.3 负载均衡策略–IPHASH


使用环境及缺点

优化负载均衡策略_SSO策略
单点登录_后续
5. nginx配置文件其他关键字说明
5.1 关闭服务器_down属性
关闭服务器
案例:关闭8090服务器
upstream hyShip {
ip_hash; # 让用户与服务器进行绑定,缺点是使用ip_hash指令无法保证后端服务器的负载均衡==>redis做中间件
server 127.0.0.1:8090 weight=5 down; # weight设置并发量 max_fails最大失败次数 fail_timeout失败超时时间
server 127.0.0.1:8091 weight=3;
server 127.0.0.1:8092 weight=2;
}5.2 标识备用机_backup属性
说明:该属性用来标识备用机,正常的情况下,用户不会访问备用机,除非当前服务器遇忙/当前服务器宕机.才有可能访问备用机.
案例: 设置8094为备用机
upstream hyShip {
ip_hash; # 让用户与服务器进行绑定,缺点是使用ip_hash指令无法保证后端服务器的负载均衡==>redis做中间件
server 127.0.0.1:8090 weight=5 down; # weight设置并发量 max_fails最大失败次数 fail_timeout失败超时时间
server 127.0.0.1:8091 weight=3;
server 127.0.0.1:8092 weight=2;
server 127.0.0.1:8094 weight=2 backup;
}5.3 设定最大的失败次数和失败的超时时间
max_fails:设定最大的失败次数。
fail_timeout:设置失败的超时时间。
高可用(HA)说明: 当服务器发生故障时,无需人为的干预,可以自动化的实现故障的迁移.
说明: 如果发现服务器宕机如果由人工来完成 效率较低. 可以通过程序自动完成.
upstream hyShip {
ip_hash; # 让用户与服务器进行绑定,缺点是使用ip_hash指令无法保证后端服务器的负载均衡==>redis做中间件
server 127.0.0.1:8090 weight=5 down; # weight设置并发量 max_fails最大失败次数 fail_timeout失败超时时间
server 127.0.0.1:8091 weight=3 max_fails=1 fail_timeout=60s;
server 127.0.0.1:8092 weight=2 max_fails=1 fail_timeout=60s;
server 127.0.0.1:8094 weight=2 backup;
}
















