Nginx 反向代理 负载均衡 动静分离

实验环境:Red Hat Enterprise Linux release 8.0 (Ootpa)

192.168.160.128   使用nginx  yum 官方源进行安装

服务器提前准备配置完成jdk+tomcat , jdk为jdk1.7.0_79版本 tomcat为apache-tomcat-7.0.96.tar版本

tomcat1:8080                 tomcat2:8081

 

安装nginx

按照nginx官方提供的手册进行配置即可

# cd /etc/yum.repos.d/
# mv Centos-7.repo /bak/Centos-7.repo
# vi nginx.repo
  [nginx-stable]
  name=nginx stable repo
  baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
  gpgcheck=1
  enabled=1
  gpgkey=https://nginx.org/keys/nginx_signing.key

  [nginx-mainline]
  name=nginx mainline repo
  baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
  gpgcheck=1
  enabled=0
  gpgkey=https://nginx.org/keys/nginx_signing.key
  
  :wq
# yum -y install nginx
# systemctl enable nginx --now      //启动服务

 

关于nginx配置文件

配置文件所在位置(yum安装的方法)
不知道配置文件在哪的可以指令查看

/etc/nginx/conf.d/default.conf             //作者习惯性编辑这个

nginx还有一个配置文件为/etc/nginx/nginx.conf

配置文件分为三个部分组成:  全局块,events块,HTTP块

  • 全局块:从配置文件开始到 events 块之间,主要是设置一些影响 Nginx 服务器整体运行的配置指令。

并发处理服务的配置,值越大,可以支持的并发处理量越多,但是会受到硬件、软件等设备的制约。

        worker_processes  1;              //默认并发数量为1
  • events块:影响 Nginx 服务器与用户的网络连接,常用的设置包括是否开启对多 workprocess 下的网络连接进行序列化,是否允许同时接收多个网络连接等等。
        events{
                worker_connections 1024;           //默认最多1024个网络同时连接
              }
  • HTTP块: localtion
       location[ = | ~ | ~* | ^~] url{
              }
              =:用于不含正则表达式的 url 前,要求字符串与 url 严格匹配,匹配成功就停止向下搜索并处理请求。
              ~:用于表示 url 包含正则表达式,并且区分大小写。
             ~*:用于表示 url 包含正则表达式,并且不区分大小写。
             ^~:用于不含正则表达式的 url 前,要求 Nginx 服务器找到表示 url 和字符串匹配度最高的 location 后,立即使用此 location 处理请求,而不再匹配。
如果有 url 包含正则表达式,不需要有 ~ 开头标识。

 

反向代理

编辑配置文件

# vi /etc/nginx/conf.d/default.conf
  修改服务器ip为192.168.160.128,添加反向代理:
  proxy_pass http://192.168.160.128

:wq   保存退出

检查语法与重启服务

# nginx -t
# systemctl restart nginx

验证

浏览器访问http://192.168.160.128  默认本来是为80端口的     服务完成后访问会直接跳转至8080 tomcat端口

回车后直接跳转,成功

 

准备2个tomcat站点

配置两个tomcat站点,复制原本的tomcat文件夹到另一处,这里tomcat定义为tomcat2

cp -r /share/apache-tomcat-7.0.96 apache-tomcat-7.0.96

修改配置文件

# vi /apache-tomcat-7.0.96/conf/server.xml 
  :/Server port=   :/8080           搜索这两个端口配置,修改成其他端口

:wq保存退出

重启tomcat

# cd apache-tomcat-7.0.96/
# ./bin/shutdown.sh
# ./bin/startup.sh

开始部署站点

部署原先tomcat1站点

# cd /share/apache-tomcat-7.0.96/webapps/
# mkdir a
# echo '8080' > a/index.html

部署tomcat2站点

# cd /apache-tomcat-7.0.96/webapps/
# mkdir b
# echo '8081' > b/index.html

测试,成功

 

nginx多站点反向代理

编辑配置文件

# vi /etc/nginx/conf.d/default.conf
  修改监听端口,多添加一个自定义location

:wq保存退出

重启服务

# systemctl restart nginx

测试

用同一个端口服务网页,成功

 

负载均衡

tomcat添加站点

因为tomcat1已经有a文件并有index.html,所以要在tomcat2中建立一个a目录和index

# mkdir /apache-tomcat-7.0.96/webapps/a
# echo '8081'> /apache-tomcat-7.0.96/webapps/a/index.html

修改配置文件

# vi /etc/nginx/conf.d/default.conf
  定义upstream {}      //轮询(默认)模式

:wq保存退出

重启服务

 # systemctl restart nginx

验证

在浏览器中访问192.168.160.128/a/index.html

重新输入网址跳转或者多刷新几次,网页会显示出tomcat2:8081的内容,成功

 

负载均衡的5种模式

注意,每种模式都需要定义upstream,其中名字自定义,本文用tomcat命名。

定义完,需要在localtion / {  中定义proxy_pass},举个例子

 upstream tomcat{ 
                  server 192.168.160.128:8080; 
                  server 192.168.160.128:8081; 
                 }
 localtion / { 
                 proxy_pass http://tomcat;
                 root html;
                 index.html index.htm;
             }                                   //这样子配置的负载均衡模式才会生效

下面介绍5种负载均衡,upstream定义的方法

轮询(默认):每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。

upstream tomcat{
 server 192.168.160.128:8080;
 server 192.168.160.128:8081;
}

权重负载:服务器性能越好,可分配更大权重。weight越大,被访问几率越大

upstream tomcat{ 
  server 192.168.160.128:8080 weight=1; 
  server 192.168.160.128:8081 weight=2; 
}

ip_hash:每个请求按照访问 ip 的 hash 结果分配,这样每一个访客固定的访问一个后端服务器,可以解决 Session 的问题。

upstream tomcat{ 
 ip_hash;
 server 192.168.160.128:8080; 
 server 192.168.160.129:8080; 
}

fair:按后端服务器的响应时间来分配请求,相应时间短的优先分配。

upstream tomcat{ 
 server 192.168.160.128:8080; 
 server 192.168.160.128:8081; 
 fair;
}

url_hash:通过请求url进行hash,再通过hash值选择后端server;

upstream tomcat{ 
 hash $request_url;
 server 192.168.160.128:8080; 
 server 192.168.160.128:8081; 
}

 

动静分离

动静分离有两种模式:

  • 纯粹将静态文件独立成单独域名放在独立的服务器上,也是目前主流方案。
  • 将动态跟静态文件混合在一起发布,通过 Nginx 分开。

若你的网站/data存放着2给文件夹www,image,一个存放index.html,另一个存放image,css等静态文件

则可以这样配置nginx

# vi /etc/nginx/conf.d/default.conf

:wq 保存退出

重启服务

# systemctl restart nginx

 

 

作者: 红烧悠鸽
本文采用 CC BY-NC-SA 4.0 协议
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇