Nginx(反向代理)
场景需求
原来是1w个访问要去使用tomcat会导致并发太高,然后我们可以通过多开Tomcat服务器从而来分担。所以引入了nginx来分配tomcat。这种方式也叫做反向代理
Nginx概述
Nginx是一款高性能的http服务器/反向代理服务器/电子邮件(IMAP/POP3)代理服务器。官方测试nginx能支撑5w的并发连接,而且cpu和内存等资源消耗比较低。
应用场景
1. 网页静态服务器
2. 动态服务器(部署在tomcat里面,通过nginx反向代理搭建集群)
3. 虚拟主机(可以实现一台服务器虚拟出多个网站)
4. 反向代理和负载均衡
Nginx安装
环境准备
1. 安装gcc环境(之前redis安装就已经安装好了)
1 | yum install gcc-c++ |
2. 安装第三方的开发包(PCRE zlib Openssl)
1 | yum install -y pcre pcre-devel |
PCRE
PCRE(Perl Compatible Regular Expressions)是一个 Perl 库,包括 perl 兼容的正则表达式库。nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre 库。zlib
zlib 库提供了很多种压缩和解压缩的方式,nginx 使用 zlib 对 http 包的内容进行 gzip,所以需要在 linux 上安装 zlib 库。OpenSSL
OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。nginx 不仅支持 http 协议,还支持 https(即在 ssl 协议上传输 http),所以需要在 linux安装 openssl 库。
上传解压
3. 通过rz 上传nginx文件并且tar -zxvf解压
4. 当面目录下输入以下文字 会生成makeFile文件
1 | ./configure \ |
5. 执行make指令编译 执行make install指令下载
Nginx启动
启动步骤
1. mkdir /var/temp/nginx/client -p 创建子目录
2. 进入到Nginx目录下的sbin目录 然后执行nginx即可
3.打开nginx之后浏览器打开(直接输入linux里面的ip地址)
4.通过 ps aux|grep nginx 查看进程
其他操作指令(目录站在nginx/sbin里面)
1 | 1. 启动Nginx ./nginx |
静态资源部署
更改nginx/conf/nginx.conf配置文件
通过EditPlus5去进行设置ftp
1. 打开文件-FTP-设置FTP服务器-然后输入信息
2. 根据左上角目录去找左下角对应的目录文件然后右边更改
3. 每次更新之后弹窗选择确定就可以提交更新
4. 更改后的信息解析:
1 |
|
准备好index文件复制到nginx目录下
1.使用FileZilla软件也可以使用ftp上传
2.更改nginx.conf配置里面的root
3. 重启nginx之后(./nginx -s reload)浏览器打开就自动跳转到了index页面
虚拟主机-端口绑定
配置文件解析
1 |
|
往linux再上传需要的静态网页文件
1.还是跟之前一样通过filezilla软件上传到nginx文件下面
2.通过浏览器(记得输入不同的端口号)即可
总结
1 | 其实就是刚才的静态资源配置多配置一个server{} 然后要多有一个端口(我一个是81/一个是82) |
配置文件内部需要增加一个server{}
1 |
|
虚拟主机 域名绑定
举例
1.按上面81和82端口的例子:去hosts文件加一个域名绑定
2.我们就可以通过www.ceshi.com然后加上端口访问
更改server里的server_name
我们就可以通过www.ceshi.com然后加上端口访问
反向代理
正向代理(针对客户端)
需求:学生通过主机去找网络连接(VPN)
反向代理(针对服务器端)
需求:通过网络去找部署在linux上的tomcat服务器
1. 直接访问:tomcat并发低(负载大)
2. 反向代理:搭建tomcat集群,出现反向代理服务器。由服务器分发到tomcat去,还可以增加在给tomcat时候防火墙提高安全性
反向代理准备
1.将需要的项目打包成war上传(rz)到tomcat的webapps目录下
2.执行tomcat/bin里面的startup.sh 能够通过浏览器打开即可
配置反向代理
1.修改Nginx配置(server{}之前写)
1 | upstream tomcat-travel{ |
2.修改nginx.conf配置
1 |
|
3.访问
1 | 1. 浏览器输入:server里面的server_name(一般是localhost 但是也可以通过绑定域名(hosts文件改)) |
总结
1. 之前的演示:将静态网页直接放在nginx文件夹下 我们通过配置server{}端口和域名然后直接从浏览器访问到了tomcat
2. 反向代理:
2.1 准备:
项目打包成war文件放在tomcat/webapps里面 然后通过在nginx配置文件加upstream和更改掉访问的root index 从而加proxy_pass达到功能
2.2 访问:
现在就是浏览器写server里面的域名 --> 因为nginx里面配备了proxy_pass所以会到nginx --> http://后面的会去找upstream里面的tomcat --> 从而反向回来反馈到浏览器。
3. 总结:
因为域名输入后他不知道到底是nginx还是tomcat给的回应,所以后面的两个相当于封装起来提供了安全性
访问时候的分析:
负载均衡
我们搭建很多的tomcat形成tomcat集群(使得nginx寻找的几率相等)
1.需要很多linux机器上拥有tomcat(演示时候是一台linux放三个tomcat)
2.(将tomcat文件复制两份然后依次进去更改其他两个的端口)
3.启动每个linux的tomcat(启动三个tomcat服务器)
4.然后每个linux上的nginx配置反向代理(更改nginx配置文件内部upstream加server(因为端口不一样))
5.通过访问器访问就会不同几率的访问不同的tomcat(配置文件里面可以改浏览器title名称来区别)