Nginx是一个高性能的HTTP和反向代理服务,是由俄罗斯工程师开发的,第一个公开版发布于2004年10月4日。在处理连续高并发的情况下效果极好,能同时处理5万个并发量。
Nginx有以下几个作用:HTTP协议代理、搭建虚拟主机、服务的反向代理、在反向代理中配置集群的负载均衡。
正向代理:
![5f39fb757d4871ee7d3e764ec8115ab4.png](https://img-blog.csdnimg.cn/img_convert/5f39fb757d4871ee7d3e764ec8115ab4.png)
反向代理:
![3ea18e507f640707ff9200d74810bee8.png](https://img-blog.csdnimg.cn/img_convert/3ea18e507f640707ff9200d74810bee8.png)
正向代理和反向代理的区别:
![80cc1af1faf6d5c7270ab474a10369b5.png](https://img-blog.csdnimg.cn/img_convert/80cc1af1faf6d5c7270ab474a10369b5.png)
安装Nginx:
1、将安装包上传至Linux
2、安装环境:
a、gcc,Nginx是用c语言开发的,需要先编译,编译依赖gcc环境,安装gcc:yum install gcc-c++。
b、pcre,它是一个Perl库,包括正则表达式库,Nginx的http模块使用pcre来解析正则表达式:yum install -y pcre pcre-devel(pcre-devel是使用pcre开发的一个二次开发库,Nginx也需要该库)
c、zlib,zlib库提供了很多压缩和解压缩的方式,Nginx使用zlib对http包的内容进行gzip:yum install -y zlib zlib-devel。
d、openssl,openssl是一个强大的安全套接字层密码库,包括主要的密码算法,常用的秘钥和证书封装管理功能以及SSL协议,Nginx不仅支持http协议,也支持HTTPS协议(在ssl协议上传输http):yum install -y openssl openssl-devel。
3、编译安装:解压,tar -zxvf nginx-1.8.0.tar.gz,解压后进入根目录cd nginx-1.8.0配置安装参数:
![b843494a34e6499984510c0416ff6020.png](https://img-blog.csdnimg.cn/img_convert/b843494a34e6499984510c0416ff6020.png)
配置完之后编译安装:make --->make install
安装完成后操作Nginx:
启动:cd /usr/local/nginx/sbin ------> ./nginx
停止:快速停止: cd /usr/local/nginx/sbin -------> ./nginx -s stop 该方式相当于先查出Nginx进程id再使用kill命令强制杀掉进程。 完整停止(建议使用):cd /usr/local/nginx/sbin ------> ./nginx -s quit 该方式等待Nginx进程处理任务完毕后进行停止。
重启:先停止再开启(建议使用):./nginx -s quit -----> ./nginx 重新加载:./nginx -s reload
测试:Nginx默认监听80端口,启动之后访问:
![76d7c8b4d613f96e0651983cc703263e.png](https://img-blog.csdnimg.cn/img_convert/76d7c8b4d613f96e0651983cc703263e.png)
配置虚拟主机:
![27d46096ce9c04754331a26d9b8ebf04.png](https://img-blog.csdnimg.cn/img_convert/27d46096ce9c04754331a26d9b8ebf04.png)
三种方式:基于ip,基于端口,基于域名。
基于ip配置:复制Nginx目录的html文件夹并命名为虚拟ip。
![abe940592a8f260485787450332d8e84.png](https://img-blog.csdnimg.cn/img_convert/abe940592a8f260485787450332d8e84.png)
绑定多个ip:复制网络配置文件,并修改其中的device为ens33-1,ipaddr修改为192.168.50.101(视自己情况而定),保存退出,重启虚拟机,测试连接。
![aad94b31a1a9273b01c934590f050c3f.png](https://img-blog.csdnimg.cn/img_convert/aad94b31a1a9273b01c934590f050c3f.png)
修改Nginx的配置文件nginx.conf:
![d09b46a8606ca28f196c41d41c32754b.png](https://img-blog.csdnimg.cn/img_convert/d09b46a8606ca28f196c41d41c32754b.png)
vim /usr/local/nginx/conf/nginx.conf:开放这两个,并修改pid为如下图所示内容,并按照目录新建logs文件夹。
![db6994493c8b0e1d4881c32fc4fbc86f.png](https://img-blog.csdnimg.cn/img_convert/db6994493c8b0e1d4881c32fc4fbc86f.png)
配置server,一个server就是一个虚拟主机:为了便于区分,在复制新建html101的时候将里面的index.jsp内容稍作修改以提高辨识,配置文件修改后保存退出并关闭nginx然后重新开启。
![d9a62ac30fe723faa6f005d903321bb5.png](https://img-blog.csdnimg.cn/img_convert/d9a62ac30fe723faa6f005d903321bb5.png)
在浏览器输入192.168.50.101:
![3f93e16d3379bdf677afb62e3e5f9c81.png](https://img-blog.csdnimg.cn/img_convert/3f93e16d3379bdf677afb62e3e5f9c81.png)
基于端口的虚拟主机配置方式和ip类似,server_name 项不做修改,将listen 端口号修改即可,步骤同上。
基于域名的虚拟主机配置方式:在配置之前先将该文件修改
![8849a37922b6a1f2af907162446eb6a1.png](https://img-blog.csdnimg.cn/img_convert/8849a37922b6a1f2af907162446eb6a1.png)
在末尾加上要配置的域名:
![d398d649bc5e0af2d46c38be63683771.png](https://img-blog.csdnimg.cn/img_convert/d398d649bc5e0af2d46c38be63683771.png)
复制html文件夹,修改index.jsp内容提高辨识度。
![d1f73e57dfadbdf7b206167157da2747.png](https://img-blog.csdnimg.cn/img_convert/d1f73e57dfadbdf7b206167157da2747.png)
配置文件中修改:保存退出,关闭nginx,开启nginx
![d5aa20f1f3b8fec1a44d9a2d9dcfc64a.png](https://img-blog.csdnimg.cn/img_convert/d5aa20f1f3b8fec1a44d9a2d9dcfc64a.png)
访问域名http://test.tangfen.com:
![5d30d31342925bb445e17d763452d2e8.png](https://img-blog.csdnimg.cn/img_convert/5d30d31342925bb445e17d763452d2e8.png)
反向代理: 开启另外一台虚拟机ip地址为192.168.50.2,安装配置好两个tomcat,修改端口号,修改默认首页内容。
在nginx中加入的配置:
![c99646a09d0c7a2cde9c74f7cd1ea8b5.png](https://img-blog.csdnimg.cn/img_convert/c99646a09d0c7a2cde9c74f7cd1ea8b5.png)
![9f3f260ebdbcde957b9f0bd9cd7bb505.png](https://img-blog.csdnimg.cn/img_convert/9f3f260ebdbcde957b9f0bd9cd7bb505.png)
保存退出,重启访问:
![d96dea57ade7e0318195c20b9b805574.png](https://img-blog.csdnimg.cn/img_convert/d96dea57ade7e0318195c20b9b805574.png)
在反向代理中配置负载均衡:
负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。
![480520293979b83c58348f8869420cf9.png](https://img-blog.csdnimg.cn/img_convert/480520293979b83c58348f8869420cf9.png)
负载均衡的策略:
轮询(默认):每个请求按照时间顺序逐一分配到不同的后端服务器,如果后端服务器当掉,自动剔除。
指定权重:指定轮询几率,weight和访问比率成正比,用户后端服务器性能不均的情况。
ip绑定ip_hash:每个请求按照访问的ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
nginx作为负载均衡的服务器,用户请求先到达nginx,再由nginx根据负载配置将请求转发至tomcat服务器。
nginx服务器:192.168.50.1
tomcat1:192.168.50.2:8081
tomcat2:192.168.50.2:8082
在nginx配置文件中配置集群:
![3579b4349e580c95e43e871755d287e1.png](https://img-blog.csdnimg.cn/img_convert/3579b4349e580c95e43e871755d287e1.png)
![ef50e40e68bacec08716845558a54831.png](https://img-blog.csdnimg.cn/img_convert/ef50e40e68bacec08716845558a54831.png)
配置完成后保存退出,重启nginx服务,访问:
![3dad6a5aa11ed2436e9f8983b2885533.png](https://img-blog.csdnimg.cn/img_convert/3dad6a5aa11ed2436e9f8983b2885533.png)
轮询:
![0509e1fc01aa9621f5c4e5dd24c0243b.png](https://img-blog.csdnimg.cn/img_convert/0509e1fc01aa9621f5c4e5dd24c0243b.png)
http协议代理:用来做上传图片时候图片回显:vsftpd和nginx安装到同一个虚拟机中。
修改系统的hosts文件:
![4fceb656d079447e229a379592d97df6.png](https://img-blog.csdnimg.cn/img_convert/4fceb656d079447e229a379592d97df6.png)
修改nginx配置文件:
![804826a60b5b71d610b7d2b2c414da1e.png](https://img-blog.csdnimg.cn/img_convert/804826a60b5b71d610b7d2b2c414da1e.png)
代码中配置文件修改:
![0ed85ddb9424a5e8a8c526c8f6ddd446.png](https://img-blog.csdnimg.cn/img_convert/0ed85ddb9424a5e8a8c526c8f6ddd446.png)
测试:
![7191913a04b715804a02af3faa22b05a.png](https://img-blog.csdnimg.cn/img_convert/7191913a04b715804a02af3faa22b05a.png)
将该路径单独拿出来可以直接访问:
![5809db7f919c37175f801f4b5c89a158.png](https://img-blog.csdnimg.cn/img_convert/5809db7f919c37175f801f4b5c89a158.png)
![0c00bbeadd2414dc3a3db675baeff3d5.png](https://img-blog.csdnimg.cn/img_convert/0c00bbeadd2414dc3a3db675baeff3d5.png)
明天学Redis,先把今天学的记录下来。