Nginx的安装使用----反向代理服务器
Nginx
代理服务器--使用比较多的为nginx代理服务器。
1.什么是nginx
tomcat是web应用服务器。
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好。开源软件,服务器软件.能够支持高达 50,000 个并发连接数的响应,
并发: 再同一时间段内处理请求的个数。tomcat并发能力大概1000. nginx的并发50000.
1.反向代理web服务器。
2.并发能力高
3.占用内存小
4.负载均衡
现在由哪些企业正在使用nginx?
1. 京东 2.淘宝 3.腾讯 4. 新浪 5.网易等
2.为什么使用nginx
在传统的Web项目中,并发量小,用户使用的少。
所以在低并发的情况下,用户可以直接访问tomcat服务器,然后tomcat服务器返回消息给用户。
而在互联网项目下,因单个tomcat默认并发量有限制。如果请求量过大,会产生如下问题:
Tomcat8 默认配置的最大请求数是 150,也就是说同时支持 150 个并发,当然了,也可以将其改大。 当某个应用拥有 250 个以上并发的时候,应考虑应用服务器的集群。 具体能承载多少并发,需要看硬件的配置,CPU 越多性能越高,分配给 JVM 的内存越多性能也就越高,但也会加重 GC 的负担。 操作系统对于进程中的线程数有一定的限制: Windows 每个进程中的线程数不允许超过 2000 Linux 每个进程中的线程数不允许超过 1000 (在 Java 中每开启一个线程需要耗用 1MB 的 JVM 内存空间用于作为线程栈之用。) Tomcat的最大并发数是可以配置的,实际运用中,最大并发数与硬件性能和CPU数量都有很大关系的。更好的硬件,更多的处理器都会使Tomcat支持更多的并发。 maxThreads="150" 最大并发数 minSpareThreads="10"///初始化时创建的线程数 maxSpareThreads="500"///一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。
3.如何使用nginx
(1)安装nginx软件所需的依赖插件
yum install -y gcc-c++
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel
(2)把我们的nginx安装包上传到linux中并解压,推荐可以把它放在 /usr/local下
安装包nginx官网下载
nginx – nginxhttps://trac.nginx.org/nginx/browser
我上传到了/usr/local,解压该压缩包
tar -zxvf nginx-1.18.0.tar.gz
(3)创建一个目录作为nginx的安装目录
mkdir /usr/nginx
(4)进入nginx的解压目录
(5)设置nginx的安装路径为上面创建的文件夹 /usr/nginx
./configure --prefix=/usr/nginx
(6) 编译并安装
make ----编译源码
make install ---安装编译后的代码
(7)进入/usr/nginx
这就安装成功了
nginx的目录结构
conf: nginx配置文件的目录 很重要
html: nginx的一些静态资源的目录。
logs: nginx的日志文件。
sbin: nginx的脚本目录 启动nginx的脚本
./nginx ----启动nginx
./nginx -s stop ---关闭nginx
./nginx -s reload --重新加载配置文件
(7)启动nginx
./nginx 开启nginx
./nginx -s stop 关闭nginx
./nginx -s reload 重新加载配置文件---修改完配置文件后使用该命令
如何查看进程
(8) 访问nginx服务器
如果无法访问是因为防火墙没有放行或者关闭
//firewall-cmd --list-port 查看放行了哪些端口号
firewall-cmd --add-port=80/tcp --zone=public --permanent 放行指定端口号
systemctl stop firewalld 关闭防火墙----慎重【关闭】 开启还会启动
4. nginx配置文件的介绍
配置代理的服务信息介绍:
我们可以配置多个端口号
首先我们在/usr/nginx安装目录下创建一个文件夹my,里面创建一个html页面,然后我们对比下面的代码写了个81端口号
我们可以通过nginx所在服务器的ip+81端口号就能访问到我们刚刚配置的代理服务器了
5.nginx三大核心功能---重点
1.反向代理
2.负载均衡
3.动静分离
5.1.反向代理
正向代理: 该服务器代理的是客户端,对于服务器来说,不知道真实客户端的ip。比如: 翻墙软件。
反向代理: 该服务器代理的是服务端,对于客户端来说,不知道访问的真实服务器地址。 比如: nginx
它反向代理了我们的项目所在的服务器ip,用户访问时访问的是nginx的代理服务器的ip,然后代理服务器负责访问我们的真实项目所在的服务器的ip,这样可以不让用户知道我们真实的服务器的ip,一定程度上也起到了保护作用
如何使用nginx完成反向代理
准备一个真实项目和Tomcat服务器 并把项目部署到Tomcat.---springboot项目
在根目录下创建一个project目录,把项目放进里面
mkdir /project
启动真实项目
java -jar qy151-springboot---------.jar
修改nginx配置文件
cd /usr/nginx/conf
vi nginx.conf
重新加载nginx
cd ../sbin
./nginx -s reload
访问nginx所在服务器ip+nginx监听的端口号
5.2.负载均衡
在公司里我们的项目会被运行在好几台服务器上,这些服务器运行的都是同一个东西,为的就是提高并发量。用户访问Nginx代理服务器以后,由代理服务器负责分配用户到底访问哪一个服务器,它会根据我们分配的策略来进行合理分配(默认不设置会进行轮询分配,轮询分配可以理解为发牌员的发牌)。
(1)启动两台项目
(2)修改nginx配置文件
(3)重新加载配置文件
cd /usr/nginx/sbin
./nginx -s reload
(4)访问
根据上面的配置,我们创建了一个集群,名称为ban151,集群中一共由两个服务,相当于两台服务器(因为只有一台电脑,所以只能用端口号的不同来区别这两个服务器,真正使用时这些服务器的ip都不相同)。然后让我们的nginx直接代理这个集群。用户访问nginx的代理ip:81,nginx就会以轮询的方式分配服务器。
nginx负载均衡的策略:
默认负载均衡的策略为轮询策略。
1)、轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
2)、weight 值越大权重越大
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
3)、ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
4)、fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
5)、url_hash(第三方)
负载均衡的策略不能同时使用,只能根据需求任选其一。
5.3.动静分离
动静分离就是让静态资源由我们的nginx来管理,这样当我们修改静态资源时,只是修改了代理服务器上的内容,而不是每一个真实服务器的内容都要修改,这样大大节省了效率。
先来一个springboot项目
【1】pom.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.12.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.wzh</groupId><artifactId>springboot-nginx1</artifactId><version>0.0.1-SNAPSHOT</version><name>springboot-nginx1</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version></properties><dependencies><!--thymeleaf模板引擎理解为:jsp模板引擎是一样的,只是springboot内置的tomcat不支持jsp模板引擎,默认支持的模板引擎是thymeleaf--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>
【2】创建controller层
【3】 在templates下创建index.html
【4】启动项目并访问http://localhost:8080/index
可以正常访问,templates目录下的html文件不能直接访问
明明请求了一个路径,为什么发了三个请求,步骤如下图
(1)为什么要使用动静分离
解决:
搭建集群,当添加新的静态资源时,就不需要在每个服务器上修改,只需要修改nginx上的静态资源。
(2)如何使用nginx搭建动静分离
将springboot项目中的static文件提取出来,将不带static文件的项目打包成jar,放到linux中(一般都放在 /project中),然后将static文件放到nginx的根目录下(/usr/nginx/)。然后修改我们的配置文件:
配置了一个server:
把项目中的静态资源static放入nginx安装路径下,删除项目中的静态资源
重新加载配置文件
./nginx -s reload
运行项目(java -jar 工程),如果我们直接访问真实服务器地址,静态资源无法加载,但是通过nginx代理服务器访问项目,静态资源就可以加载。这就实现了我们的动静分离的原则。
我们发现直接访问8080静态资源无法加载
如果访问nginx的81可以加载静态资源
这里涉及到springboot框架的一个小知识点,spingboot中的tomcat不支持jsp模板引擎,springboot中templates包下的页面只能使用html,也只能被重定向到该页面,无法通过浏览器直接访问。
6. nginx的高可用
我们的Nginx虽然承受并发的能力非常强,但不排除由意外情况导致我们的nginx会宕机。为了尽可能使我们的项目正常运行,这时我们可以启用备胎计划,也就是再搞一台服务器当做代理服务器,这两台代理服务器之间有一个主从关系。平常我们的备胎代理服务器不会使用,当标记为MASTER的主代理服务器宕机了,我们的被标记为BACKUP的从代理服务器就可以成功上位,充当MASTER的位置实现代理功能,当MASTER的代理服务器正常运行以后,BACKYUP就退居二线,不再使用。
准备条件:
1.192.168.19.151----> master主节点
2.192.168.18.152---->backup从节点
检查:
两台linux是否可以正常启动nginx
两台linux都安装keepalived
yum -y install keepalived 安装keepalived
rpm -q -a keepalived 查看本地是否安装keepalived
默认keepalived的配置文件在 /etc/keepalived下
把keepalive的配置文件覆盖---两台机器
global_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.locsmtp_ server 192.168.19.152smtp_connect_timeout 30router_id 192.168.19.152
}vrrp_script chk_http_ port {script "/usr/local/src/nginx_check.sh"interval 2weight 2
}vrrp_instance VI_1 {state BACKUPinterface ens33virtual_router_id 51priority 90advert_int 1authentication {auth type PASSauth pass 1111}virtual_ipaddress { 192.168.19.50}
}
把启动脚本放入指定目录 /usr/local/src/ 文件名为nginx_check.sh
#!/bin/bash
# 检查是否开启nginx
A=`ps -C nginx --no-header |wc -l`
if [ $A -eq 0 ];then# 开启nginx nginx脚本所在的路径/usr/nginx/sbin/nginxsleep 2# 开启nginx失败 则执行关闭keepalivedif [ `ps -C nginx --no-header |wc -l` -eq 0 ];thenpkill -9 keepalivedfi
fi
或
这个需要先安装killall
yum install psmisc
然后启动nginx和keepalived
./nginx
systemctl start keepalived
测试 这里的地址为虚拟ip的地址。
测试从代理服务器 有没有起到作用
主nginx的nginx关闭:
nginx -s stop
systemctl stop keepalived
当我们MASTER机的nginx stop运行,脚本启动,同时关闭了我们的keepalived。
这时负责代理功能的服务器就是标记为BACKUP的我们的从服务器。当主代理服务器正常运行时,负责代理功能的服务器就是标记为MASTER的代理服务器,BACKUP服务器不负责代理。
注意:你在keepalived.conf里面配置的是你的nginx代理服务器的ip,每个代理服务器的nginx.conf里面配置的都是真实项目所在服务器的ip集群。两台代理服务器的nginx.conf配置文件的内容应当相同,毕竟代理的都是相同的服务器。
Nginx的安装使用----反向代理服务器相关推荐
- nginx(http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器)与tomcat服务器
前言 为毛要用nginx服务器代理,不直接用tomcat 7.0,还做多了一次接请求? 这个是我想问的,公司的新项目是要用Nginx+tomcat7+jdk开发的,用户命名可以直接访问tomcat,为 ...
- Centos7 nginx 虚拟主机、反向代理服务器及负载均衡,多台主机分离php-fpm实验
一.简介 本章介绍一些架构原理基础知识, 1.1.LNMP及php-fpm 请参考:Centos7-yum部署配置LNMP+php-fgm,一台机器上部署 1.2.透明代理.反向代理,正向代理 请参考 ...
- 反向代理服务器工作原理及示例
一.什么是反向代理 反向代理(Reverse Proxy)方式是指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器:并将从服务器上得到的结果返回给Internet上请 ...
- 转:反向代理服务器的工作原理
一.什么是反向代理 反向代理(Reverse Proxy)方式是指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器:并将从服务器上得到的结果返回给Internet上请 ...
- 反向代理服务器(转)
反向代理及Nginx示例 1 反向代理的概念 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果 ...
- 反向代理服务器的工作原理
最近接触了nginx,nginx可以作为一个反向代理服务器完成负载均衡,下面记录一下从网上学习到的一些知识. 一 概述 反向代理(Reverse Proxy)方式是指以代理服务器来接受Interne ...
- Nginx的基本介绍反向代理
什么是nginx Nginx 是异步框架的网页服务器,也可以用作反向代理.负载平衡器和 HTTP 缓存.大部分 Web 服务器使用 Nginx,通常作为负载均衡器. 部署web项目的容器(部署你们写的 ...
- 反向代理服务器的工作原理 (转)
最近有打算研读nginx源代码,看到网上介绍nginx可以作为一个反向代理服务器完成负载均衡.所以搜罗了一些关于反向代理服务器的内容,整理综合. 一 概述 反向代理(Reverse Proxy)方式 ...
- Linux系统配置安装Nginx反向代理服务器
Linux系统配置安装Nginx反向代理服务器 Nainx官网下载:http://nginx.org/ 安装nginx之前首先需要安装 pcre-8.37.tar.gz openssl-1.0.1t. ...
最新文章
- 2021年大数据基础(四):​​​​​​​​​​​​​​​​​​​​​大数据业务分析基本步骤
- 面试官:原生GAN都没复现过,自己走还是我送你?
- centos6.5 Building the main Guest Additions module
- BZOJ4205卡牌配对——最大流+建图优化
- 大话业务流程图(二)—如何绘制业务流程图?
- 数据:PayPal 24小时内加密交易量达2.42亿美元创记录
- 接受吧,这世界充满潜规则
- 软件测试经典面试题30道
- 【图像处理算法】直方图均衡化
- 不存在一笔画完一个正方体
- 提升业务投入和研发人效,2个实用建议,很多大公司都在用
- android10隐藏ssid,SSID隐藏手机如何连接 手机连接隐藏ssid无线网络教程
- 基于51单片机自行车码表霍尔测速里程显示超速报警方案原理图设计
- oCPC和CPC之间的区别
- 文章转载---西工大博士生文言文答辩致谢
- 【无标题】华为ict网络赛道练习题
- 我们上语文英语音乐计算机和美术英语,语文、英语、数学、是什么意思
- 手机显示主宰进攻服务器,xy盛世遮天真龙主宰
- [HEOI 2012] 采花
- 第113章 SQL函数 QUARTER
热门文章
- 古典问题:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
- 7939.com,7b.com.cn,9505.com,4199.com 清除工具(转)
- 固定资产拆分比例怎么计算_固定资产折旧的计算方法
- 你和你的女神之间,差了一个OpenCV口红色号识别器
- HTTP协议-python接口自动化话测试(无涯)
- 如何理解庄子所说的“吾生也有涯,而知也无涯。以有涯随无涯,殆己”?
- 系统辨识(六):最小二乘法的修正算法
- Eclipse 远程开发插件 RSE 及远程登录
- 【架构师考试】架构师考试内容与历年真题
- Linux中卷的扩展命令