这里写目录标题
Nginx安装
- 安装依赖
yum install gcc gcc-c++ make automake autoconf libtool pcre* zlib openssl openssl-devel
- 进入 /mnt 目录,在此下载nginx压缩包
wget http://nginx.org/download/nginx-1.7.0.tar.gz
- 用命令解压压缩包
tar -zxvf nginx-1.7.0.tar.gz
- 解压后再 /mnt目录下得到 nginx-1.7.0的文件夹,进入该文件夹,并执行以下命令进行配置安装路径。
/usr/local/nginx 指定了安装的路径。
./configure --prefix=/usr/local/nginx
- 开始使用命令编译安装
make && make install
- 安装完成后进入安装路径 启动nginx
注意:/usr/local/nginx/sbin/ 在目录下才可以使用nginx的相关命令。
/usr/local/nginx/sbin/nginx -s reload
- nginx 中默认的配置文件路径 /usr/local/nginx/conf/nginx.conf中指定的访问的端口为80,服务器名为localhost;而centerOs中的防火墙默认关闭80端口,所以物理机中无法通过80端口访问。此时我们需要让防火墙允许80端口的访问。
firewall-cmd --state #查看防火墙firewall运行状态
若防火墙开启,则添加80端口
firewall-cmd --add-port=80/tcp
查看防火墙已经开放的端口
firewall-cmd --list-all
防火关闭则打开
systemctl start firewalld.service
- 查看虚拟机中分配到IP地址
ip addre
若使用该命令没有看到inet对应 的IP地址。
则使用命令:
vi /etc/sysconfig/network-scripts/ifcfg-ens33
将其中
ONBOOT=NO
改为
ONBOOT=YES
保存退出后执行重启网络命令
sudo service network restart
9. 回到物理机的浏览器中访问
Nginx命令操作
进入 /usr/local/nginx/sbin/ ,在此目录下进行nginx命令的相关操作。
- 查看版本
./nginx -v
- 关闭nginx
./nginx -s stop
- 启动nginx
./nginx
- 重新加载配置(非重启)
./nginx -s reload
Nginx 的相关配置
配置文件存放路径:/usr/local/nginx/conf/nginx.conf
nginx配置文件的组成部分
组成部分如下图:
- 全局块(上图红色部分):从配置文件第一行开始到events之中的部分,其中配置的是影响nginx运行的配置。
例如:
woker_processes 1; # 并发服务配置,值越大处理的并发服务越多,受到硬件软件等因素影响。
- events(上图蓝色部分):配置nginx与用户网络连接的相关内容。
例如:
woker_connections 1024; # 设置最大的连接数
- http(上图绿色部分):是nginx中修改最频繁的部分。代理,缓存,日志,第三方模块配置都要在此进行配置。
http有两部分组成:http全局块(下图红色部分) 和 server块(下图黄色部分) 。 如下图
http全局块:其中包括文件引入,MIME-TYPE定义,日志自定义,连接超时时间,单连接请求数上限等。
server块:每个http中可以包含多个server,每个 server相当一个虚拟主机。每个server块中由两部份组成:全局server块和location块。
全局server块:常见配置为配置本虚拟主机的访问端口,虚拟主机名称,IP等
location块:一个server块中可存在多个location块。该部分主要配置基于nginx接收到的请求字符串。对特定的请求进行处理。地址指向、数据缓存应答控制,第三方模块配置等。
Nginx配置案例
案例一:反向代理
实现效果:
在物理机的浏览器中输入www.zhangxiaosan.top.tomcat,跳转到虚拟机centeros的tomcat主页中。
准备:
- 在centerOs7中安装JDK:
使用以下命令进行安装JDK
1. mkdir /usr/local/java # 创建文件夹
2. cd /usr/local/java # 进入目录
3. wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u141-b15/336fa29ff2bb4ef291e347e091f7f4a7/jdk-8u141-linux-x64.tar.gz" # 下载jdk1.8压缩包
4. tar -zxvf jdk-8u141-linux-x64.tar.gz # 解压jdk压缩包
5. mv jdk1.8.0_141/ jdk8 # 将解压的文件夹重命名
6. vim /etc/profile # 配置环境变量
# 在profile 文件末尾加入以下配置,并保存退出编辑
7. export JAVA_HOME=/usr/local/java/jdk8
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/jre/lib/rt.jar
8. source /etc/profile # 重新加载配置
- 在centerOs7中安装tomcat。使用默认8080端口
1. mkdir /usr/local/tomcat #创建文件夹
2. cd /usr/local/tomcat # 进入文件夹
3. wget https://mirrors.bfsu.edu.cn/apache/tomcat/tomcat-8/v8.5.61/bin/apache-tomcat-8.5.61.tar.gz #下载tomcat 压缩包
4. tar -zxvf apache-tomcat-8.5.61.tar.gz # 解压压缩包
5. mv apache-tomcat-8.5.61 tomcat #将解压的文件夹重命名
6. cd /usr/local/tomcat/tomcat/bin/ # 进入tomcat的bin目录
7. vim catalina.sh #编辑文件
# 在catalina.sh配置文件末尾添加tomcat 环境变量
8. JAVA_OPTS="-Xms512m -Xmx1024m -Xss1024K -XX:PermSize=512m -XX:MaxPermSize=1024m"
export TOMCAT_HOME=/usr/local/tomcat/tomcat
export CATALINA_HOME=/usr/local/tomcat/tomcat
export JRE_HOME=/usr/local/java/jdk8/jre
export JAVA_HOME=/usr/local/java/jdk8
9. cd /usr/local/tomcat/tomcat/bin #进入tomcat的bin 目录
10. ./startup.sh #启动tomcat
使用命令查看tomcat进程:
ps -ef|grep java
如下图所示,说明已经启动。
tomcat 默认的端口是8080,
防火墙中并未添加该端口,给防火墙配置放行8080端口。
firewall-cmd --add-port=8080/tcp
在centerOs7 中使用命令查看IP地址:
ip addre
在物理机中访问centerOs7的IP地址和端口号,如下图,就能进入tomcat界面:
说明
下图为反向代理的流程图:
开始
- 物理机中进入C:\Windows\System32\drivers\etc在此目录下的host文件中添加
192.168.83.128 www.zhangxiaosan.top.tomcat #192.168.83.128 为虚拟机centeros中的ip
2. 在虚拟机的centerOs中进入nginx的conf目录下
cd /usr/local/nginx/conf/
3.修改nginx的代理配置
vim nginx.conf
将上图的配置改成虚拟机centerOs 的IP地址
server_name 192.168.83.128
在location中添加以下的配置
proxy_pass http://127.0.0.1:8080 #配置反向代理的tomcat地址和端口
回到物理机中进行访问
案例2 :使用正则表达式配置代理
说明:
- 访问http://www.zhangxiaosan.top.tomcat:9001/api/跳转到http://127.0.0.1:8081/index.html
- 访问http://www.zhangxiaosan.top.tomcat:9001/server/跳转到http://127.0.0.1:8080/index.html
基于案例一的基础上,8080的tomcat已经存在,此时需要一个8081端口的tomcat。
按照案例一中的步骤解压tomcat压缩包,并重命名为tomcat_8081.如下所示:
进入tomact_8081文件夹,进入conf文件夹,编辑server.xml,修改默认访问的端口8080为8081.
如下
额外修改shutdown部分的端口。
进入nginx的配置文件夹中修改nginx.conf 文件,如下:
在HTTP域中添加以下配置:
配置说明:
server{
listen 9001;#nginx监听的接口
server_name 192.168.83.128;#centeros的IP地址
location ~/api/{ #正则表达式,所有带有api的请求
proxy_pass http://127.0.0.1:8001; #代理目标
}
location ~/server/{ #正则表达式,所有带有server的请求
proxy_pass http://127.0.0.1:8080; #代理目标
}
}
内容说明:
- = : 用于不含正则表达式的uri前,要求请求字符串与uri严格匹配,如果匹配成功,就停止继续向下搜索并立即处理该请求。
- ~ : 用于表示uri包含正则表达式,并且区分大小写。。
- ~* : 用于表示uri包含正则表达式,并且不区分大小写。。
- ^~ :用于不含正则表达式的 uri前,要求Nginx服务器找到标识uri和请求字
符串匹配度最高的location 后,立即使用此location 处理请求,而不再使用location
块中的正则uri和请求字符串做匹配。。
注意:如果uri包含正则表达式,则必须要有 ~ 或者 ~* 标识。
保存配置后推出,并重新执行新配置:
执行新配置
#重启
1. cd /usr/local/nginx/sbin/
2. ./nginx -s reload
防火墙添加9001,8081端口
1. firewall-cmd --add-port=8081/tcp #添加8081端口
2. firewall-cmd --add-port=9001/tcp #添加9001端口
为8080和8081的tomcat添加项目和文件:
进入8080 的tomcat,并在其webapps文件夹下创建server文件夹,并在其中创建index.html文件
1. cd usr/local/tomcat/tomcat/webapps/
2. vim server/index.html #html的内容为<h2>8080</h2>
目录结构:
进入8081 的tomcat,并在其webapps文件夹下创建server文件夹,并在其中创建index.html文件
1. cd usr/local/tomcat/tomcat_8081/webapps/
2. vim api/index.html #html的内容为<h2>8081</h2>
目录结构如下:
回到物理机测试:
案例三:服务器A的nginx代理到服务器B的nginx
说明: 假设有两个服务器,服务器A(192.168.83.129)和服务器B(192.168.83.130)。用户访问服务器A的80端口的指定url时,将该访问转发到服务器B中的。注意,服务器A中对服务器B的访问只做统一的访问入口。如下图所示:
流程:
- 用户访问请求访问192.168.83.129/serverB/serverApi1/…
- 服务器A的nginx的80端口配置符合serverB的配置规则,则将请求转发得到服务器B的8080端口。
- 服务器B接收到转发的请求后,nginx的8080端口配置符合/serverB/serverApi1/的规则。服务器B将请求访问到代理的相关项目中(相关项目比如spring boot的jar包项目。)
服务器A的nginx配置如下:
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
location /serverB/ {
proxy_pass http://192.168.83.130:8080;
#proxy_redirect default;
proxy_set_header X-Real-IP $remote_addr;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
服务器B的nginx配置如下:
server {
listen 8080;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
location /serverB/serverBApi1/ {
proxy_pass http://192.168.83.130:8000/serverBApi1;
#proxy_redirect default;
proxy_set_header X-Real-IP $remote_addr;
}
location /serverB/serverBApi2/ {
proxy_pass http://192.168.83.130:8002/serverBApi2;
#proxy_redirect default;
proxy_set_header X-Real-IP $remote_addr;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
负载均衡
定义:增加服务器数量,将请求分到多个服务器中
案例1 :
效果:
在浏览器中输入http://192.168.83.128/loadBalancing/index.html,负载均衡,平均分发到8080和8081中。
准备:
- 准备两个tomcat,端口为8080和8081,(使用反向代理案例1和2的tomcat即可)
- 在8080和8081的webapps文件夹下创建名称loadBalancing文件夹。且在此文件夹中创建文件分别为:
8080:
创建文件名为:index.html
内容:<h2>loadBalancing 8080</h2>
8081:
创建文件名为:index.html
内容:<h2>loadBalancing 8081</h2>
物理机测试:
进入nginx 的配置文件:
在http域中添加以下配置:
#负载均衡服务列表
upstream myLoadBalancing { #myLoadBalancing是自定义的名称
#配置服务器列表:
server 192.168.83.128:8080;
server 192.168.83.128:8081;
}
#修改 80端口的server域
server{
listen 80;
server_name 192.168.83.128;
localtion /{
proxy_pass http://myLoadBalancing; #此处配置为负载均衡服务列表名称
root index;
index index.html index.htm;
}
}
如下:
回到物理机测试:
现象:请求的是同一个地址,但是刷新后跳转到的页面确不一样,访问的服务器不一样。
负载均衡分配策略
-
轮询(默认策略):
根据请求发起的时间顺序逐一分配到不同的服务器中,若服务器出现异常停止,则能自动剔除。
轮询策略如下所示:(上述的负载均衡案例1就是采用的轮询方式)
-
权重策略weight:
weight表示权重,默认权重为1,数值越大,权重越高,分配请求越多。
权重策略如下所示:
-
ip_hash:
每个请求按照访问IP的hash结果进行分配,每个访客固定访问一个后端服务器,可解决session共享问题。
例如:假设当前访问IP为192.168.15.25,则第一次访问时分配到了8080,之后再使用此IP进行访问时,永远分配到的服务器都是8080.除非换IP访问分配到的服务器才会改变。
ip_hash策略如下:
-
fair:(第三方)
按照后端服务器响应的时间进行分配,响应时间越短,越优先分配。
fair策略如下:
动静分离
动静分离案例1:
准备:
- 在centeros中准备静态资源。
mkdir /usr/local/staticResource/www /usr/local/staticResource/images #创建www和images
vim /usr/local/staticResource/www/test.html #在www中创建一个test.html文件,且内容为:<h1>test static resource html</h1>
- 使用工具连接centeros ,并将一张图片上传文件到usr/local/staticResource/images中。
推荐工具:pshell
最后文件的结构如下:
配置
进入nginx的配置文件
添加新的localtion 配置,如下图所示:
autoindex on 表示列出文件夹内容。如下图:
点击图片后即可显示上传的图片:
访问页面测试如下:
nginx 高可用集群
配置高可用:
准备:
- 在之前的案例基础上安装一台新的centeros虚拟机系统。
- 两台都装上nginx ,keepalived
(省略虚拟机系统的安装步骤和nginx的安装步骤)
进入**/usr/local/**
创建文件夹c
进入该文件夹,使用命令进行安装
yum install keepalived -y
keepalived 安装成功后的安装路径为**/usr/ect/keepalived **
在此路径下可以看到文件,此文件为keepalived的配置文件。