本文主题:
一、什么是nginx
二、nginx的应用场景
三、linux环境下nigix的安装
四、nginx配置虚拟机(ip、域名)
五、nginx实现反向代理
六、nginx实现负载均衡
一、什么是nginx
1、http服务器(通过nginx配置文件配置,将静态资源放在nginx目录中或任意磁盘路径下即可访问)/反向代理服务器及电子邮件代理服务器
2、nginx未出现之前有Apache来做反向代理和负载均衡
3、开源,C语言开发
4、运行稳定,性能好,支持高并发,支持5万并发,而tomcat支持500并发
二、nginx的应用场景
1、http服务器。可以独立提供http服务、访问静态资源,如图片,html;
2、虚拟主机。实现在一台服务器虚拟出多个网站,共用80端口;
3、反向代理,负载均衡。反向代理是指通过一台nginx达到访问集群服务器的目的;负载均衡是指多台服务器可以平均分担负载,不会出现某台服务器因负载过高而宕机或某台服务器负载过低而闲置;
三、linux环境下nginx的安装
1、上传nginx源码包并解压
1)用ftp工具上传ngnix包到/myFile/tool目录下
悄悄话:此为nginx的源码包,在linux系统中安装时需要先编译再安装,即先执行make命令,再执行make install命令
2)解压
执行如下命令,表示解压到/myFile/programFiles/目录下
tar zxf nginx-1.8.0.tar.gz -C /myFile/programFiles/
2、 nginx预安装环境
先执行如下四条命令:
1)gcc安装
安装nginx需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gcc。命令:yum install gcc-c++
2)PCRE安装
PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库。nginx的http模块使用pcre来解析正则表达式,所以需要在linux上安装pcre库。命令:yum install -y pcre pcre-devel
悄悄话:pcre-devel是使用pcre开发的一个二次开发库。nginx也需要此库。
3)zlib安装
zlib库提供了很多种压缩和解压缩的方式,nginx使用zlib对http包的内容进行gzip,所以需要在linux上安装zlib库。
命令:yum install -y zlib zlib-devel
4)openssl安装
OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。nginx不仅支持http协议,还支持https(即在ssl协议上传输http),所以需要在linux安装openssl库。命令:yum install -y openssl openssl-devel
3、基础配置
1)在/var下创建temp及nginx目录,否则启动会报错
2)在nginx解压包/myFile/programFiles/nginx-1.8.0目录下执行如下配置命令
悄悄话1:./configure --help查询详细参数
悄悄话2:以下配置中第二行 【 --prefix=/myFile/programFiles/nginx \ 】 表示要nginx将要编译安装的目录
./configure \
--prefix=/myFile/programFiles/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi
4)编译安装
在nginx解压包/myFile/programFiles/nginx-1.8.0目录下执行源码编译命令:make
编译完成后执行make install 进行安装
到安装目录/myFile/programFiles/下看是否存在nginx目录,存在即表示安装成功
悄悄话:nginx安装完成的目录解析
4、启动
进入/myFile/programFiles/nginx/sbin目录下,执行命令./nginx
[root@linhaijing sbin]# ./nginx
查看进程:ps aux|grep nginx
5、停止
进入/myFile/programFiles/nginx/sbin目录下,执行命令./nginx -s stop
或者使用kill 进程号也可以正常关闭
6、nginx开机状态下修改配置文件,快速重启(刷新配置文件)
[root@linhaijing sbin]# ./nginx -s reload
7、浏览器Http访问
悄悄话:正常访问http服务器通过ip:端口号或者域名来访问;http服务器默认端口号为80,所以可以省略不写,直接通过ip访问
出现如下图所示则表示nginx安装和启动成功
四(一)、nginx配置虚拟机--通过端口来区分不同的虚拟主机(内网用的较多)
即通过http://ip:端口号的方式来访问不同的虚拟主机
悄悄话:vi环境块复制粘贴:(1)shit+v(V)选中一行,按上下箭头复制上一行或下一行(2)y:复制(3)p:粘贴(4)u:撤退
1)进入编辑/myFile/programFiles/nginx/conf/nginx.conf文件
2) 添加一个虚拟主机即server
内容如下:
server {
listen 81;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html81;
index index.html index.htm;
}
}
3)测试添加的虚拟主机是否能访问成功
复制html81目录
修改index.html文件内容,用于区分80端口欢迎页
4)在目录/myFile/programFiles/nginx/sbin下执行命令./nginx -s reload命令重新加载修改的配置文件
5)浏览器访问
显示为修改的内容,即表示虚拟主机添加成功!
四(二)、nginx配置虚拟机--通过域名来访问不同的虚拟主机(面向外网)
1)进入编辑/myFile/programFiles/nginx/conf/nginx.conf文件
添加两个server节点:
此处我们尝试拦截:http://www.sohu.com网站http://www.cnblogs.com网站
注意此测试拦截的网站协议为http,例如如果访问https://www.cnblogs.com则会拦截失败。但可以在nginx.conf文件中配置https协议下的server进行拦截。
server {
listen 80;
server_name www.sohu.com;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html-sohu;
index index.html index.htm;
}
}
server {
listen 80;
server_name www.cnblogs.com;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html-cnblogs;
index index.html index.htm;
}
}
如图:
2)添加nginx目录下html-sohu和html-cnblogs目录,并修改欢迎页,方便查看
如图 :
3)在目录/myFile/programFiles/nginx/sbin下执行命令./nginx -s reload命令重新加载修改的配置文件
4)本机配置hosts文件,添加nginx所在服务器ip和域名的映射
Windows 下hosts路径为:C:\Windows\System32\drivers\etc
添加如图所示域名和ip的映射关系并保存
悄悄话:为什么要在本地配置hosts映射?因为本地配置了hosts后会拦截网络上DNS的解析,并跳转到指定的服务器。
5)浏览器测试
则表示通过域名的方式访问成功!
五、nginx实现反向代理
1、基础概念
1.1代理服务器:转发请求,再讲请求的到内容转发回来,相当于翻墙;只起请求和转发的作用,不参与请求内容的实现
1.2、正向代理:作用于客户端,接收用户的请求,得到请求的结果后转发给用户
1.3、反向代理:作用于服务端,当使用域名访问时,决定到底哪台服务器来提供服务。反向代理服务器处于公网之中,服务器处于内网之中,当有请求时先访问代理服务器,这样也具有安全性;
1.4 本测试原理:用户的一个域名请求发送到nginx,nginx负责将请求转发给对应的服务器,再将结果返回给用户
2、图示
3、安装
3.1 上传apache-tomcat-8.0.53.tar.gz到linux的/myFile/tool目录
3.2 解压到/myFile/programFiles/目录下
[root@linhaijing tool]# tar zxf apache-tomcat-8.0.53.tar.gz -C /myFile/programFiles/
如图:
3.3 重命名为tomcat01
[root@linhaijing programFiles]# mv apache-tomcat-8.0.53/ tomcat01
3.4 复制一份命名为tomcat02
[root@linhaijing programFiles]# cp tomcat01/ tomcat02 -r
现如下图所示:
3.5 修改tomcat02的端口号,区别于tomcat01
编辑配置文件:tomcat02/conf/server.xml ,修改以下三处端口号,分别加1即可
保存退出!
3.6 修改tomcat01和tomcat02欢迎页内容,便于区分
vim tomcat01/webapps/ROOT/index.jsp
vim tomcat02/webapps/ROOT/index.jsp
3.7 启动tomcat
3.8 测试是否能访问到tomcat
3.9 配置本地hosts
配置www.test01.com和www.test02.com到nginx服务器的映射
3.10 配置nginx
vim nginx/conf/nginx.conf
内容如下:
upstream tomcat01{
server 192.168.25.128:8080;
}
upstream tomcat02{
server 192.168.25.128:8081;
}
server {
listen 80;
server_name www.test01.com;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://tomcat01;
index index.html index.htm;
}
}
server {
listen 80;
server_name www.test02.com;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://tomcat02;
index index.html index.htm;
}
}
3.11 启动nginx或者刷新nginx
进入nginx/sbin目录
启动nginx
[root@linhaijing programFiles]# ./nginx
刷新nginx
[root@linhaijing programFiles]# ./nginx -s reload
3.12 用域名测试访问
表示nginx反向代理配置成功!
六、nginx实现负载均衡
1、基础概念
1.1 负载均衡:并发数(负载)很多时,nginx根据服务器的性能分配合适的请求数量到相应的服务器(tomcat等)上
1.2 负载均衡适用于服务器是集群模式的情况
1.3 作用:处理高并发
1.4 本测试原理:一台nginx服务器对应两台tomcat服务器,nginx根据规则分配请求到tomcat服务器上,将请求均分给服务器;同时,可设置权重,来决定哪台服务器可以处理更多的请求
2、安装
2.1 复制一个tomcat03
2.2 修改端口号,不同于tomcat01和tomcat02
2.3 修改欢迎页,便于区分tomcat01和tomcat02
2.4 启动tomcat03
2.5 测试是否启动成功
2.6 修改nginx的配置文件,添加一个server,即tomcat03的ip和端口号
添加一个server表示,nginx反向代理对应了两台服务器,此时nginx接收到请求后会根据规则决定使用那台服务器进行相应,即体现了nginx实现了负载均衡的功能。
[root@linhaijing programFiles]# vim nginx/conf/nginx.conf
2.7 浏览器测试,按住ctrl+F5键进行刷新,可发现一次访问8080端口,接着一次访问8082端口,如此循环
2.8 如果某台服务器性能较好,可手动配置给与其较高的访问量
配上weight,即权重的比值,这样端口为8082的服务器处理请求的数量就要多一些
2.9 再次reload nginx后,冲去步骤2.7,ctrl+F5刷新浏览器,发现8082的页面出现的次数多一些。