Nginx具体配置(三)
一:Nginx配置实例 - 反向代理
实例一:
1.1:实现效果
在Windows浏览器地址栏中输入www.123.com,跳转到Linux系统中的tomcat主页面
访问Nginx:192.168.92.130:80
访问Tomcat:192.168.92.130:8080
1.2:访问过程分析

1.3:具体配置
1.3.1:在windows的host文件中配置域名和IP对应关系的配置,在host文件中添加内容:IP地址和内容

这时在浏览器输入www.123.com:8080即可访问到Tomcat页面
1.3.2:在Nginx进行请求转发的配置(反向代理配置)

vi nginx.conf修改文件

实例二:
2.1:实现效果
使用Nginx反向代理,根据访问的路径跳转到不同端口的服务中心
访问http://192.168.92.130:9001/edu/ 直接跳转到127.0.0.1:8080
访问http://192.168.92.130:9001/vod/ 直接跳转到127.0.0.1:8081
2.2:准备两个Tomcat,一个8080端口,一个8081端口
在tomcat8080中进入到webapps文件下,创建edu文件,创建a.html(内容8080)
在tomcat8081中进入到webapps文件下,创建vod文件,创建a.html(内容8081)
2.3:具体配置
在请求路径中包含edu的访问8080端口,请求路径中包含vod的访问8081端口

测试访问成功!


二:Nginx配置实例 - 负载均衡
2.1:实现效果
在浏览器中输入地址http://192.168.92.130/edu/a.html,平均分配到8080和8081端口中
在两台tomcat中webapps文件中,创建edu文件夹,在edu文件夹中创建a.html页面
2.2:具体配置



2.3:负载均衡的分配策略
1:轮询(默认)
每个请求根据时间顺序逐一分配带不同的服务器,如果服务器down掉,会自动剔除
2:weight
weight代表权重,默认为1,权重越高被分配的客户端越多

3:ip_hash
每个请求按访问ip的hash结果分配;这样能固定访问访问同一个服务器,可以解决session的问题

4:fair(第三方)
按后端服务器的响应时间来分配请求,响应时间越短的优先分配

三:Nginx配置实例 - 动静分离
1:动静分离简单来说就是把静态请求和动态请求分开,不能理解成只是单纯的静态页面和动态页面分开,
可以理解成使用Nginx处理静态请求,Tomcat处理动态请求。目前动静分离实现方式有两种:
1.1:纯粹把静态文件独立成单独的域名,放在独立的服务器上,也是目前主流推崇的方案
1.2:动态和静态文件混合发布,通过Nginx分开

2:准备工作
创建data文件,在data文件中创建www文件和img文件,在www文件中加入a.html,在img文件中加入一张图片
data/www/a.html data/img/3.png
3:Nginx具体配置

四:Nginx配置高可用集群

1:准备两台服务器,分别安装nginx,keepalived
安装keepalived命令:yum install keepalived -y
查看是否安装成功命令:rpm -q -a keepalived
安装路径:/etc/keepalived/keepalived.conf
2:主从配置
2.1:修改keepalived的配置文件keepalived.conf
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_ server 192.168.17.129
smtp_connect_timeout 30
router_id LVS_DEVEL # LVS_DEVEL这字段在/etc/hosts文件中看;通过它访问到主机
}
vrrp_script chk_http_ port {
script "/usr/local/src/nginx_check.sh"
interval 2 # (检测脚本执行的间隔)2s
weight 2 #权重,如果这个脚本检测为真,服务器权重+2
}
vrrp_instance VI_1 {
state BACKUP # 备份服务器上将MASTER 改为BACKUP
interface ens33 //网卡名称
virtual_router_id 51 # 主、备机的virtual_router_id必须相同
priority 100 #主、备机取不同的优先级,主机值较大,备份机值较小
advert_int 1 #每隔1s发送一次心跳
authentication { # 校验方式, 类型是密码,密码1111
auth type PASS
auth pass 1111
}
virtual_ipaddress { # 虛拟ip
192.168.17.50 // VRRP H虛拟ip地址
}
}
2.2:在路径/usr/local/src/ 下新建检测脚本 nginx_check.sh
#! /bin/bash
A=`ps -C nginx -no-header | wc - `
if [ $A -eq ];then
/usr/local/nginx/sbin/nginx
sleep
if [`ps -C nginx --no-header| wc -1` -eq 0 ];then
killall keepalived
fi
fi
3:两台服务器启动Nginx和keepalived
systemctl start keepalived.service #启动keepalived
ps -ef I grep keepalived #查看keepalived是否启动
systemctl stop keepalived.service #停止keepalived
4:测试
在浏览器地址栏输入虚拟ip地址192.168.50.20
把主服务器(192.168.92.130) nginx和keealived停止,再输入192.168.50.20
五:Nginx工作原理
1:master & worker
master相当于管理者,worker可以有多个,当请求进来后,master告诉worker,worker进行处理

2:worker如何进行工作(争抢机制)

3:一个master和多个worker的好处
3.1:可以使用 nginx -s reload 热部署,利用nginx进行热部署操作
3.2:每个worker都是独立的进程,不需要加锁,如果其中一个worker出现问题,并不会影响到其他的
4:需要设置多少个worker
Nginx和Redis类似,都采用了IO多路复用机制,每个worker都是一个独立的进程,但每个进程只有一个主线程,
通过异步非阻塞的方式来处理请求,worker数和服务器的cpu数相等最为适宜,如下:
# 设置worker数量
worker.processes 4;
# 也可以把值设置为auto,nginx会自动检测当前主机的cpu核心数,并启动对应数量的worker进程
worker.processes auto;
# work绑定cpu(4work绑定4cpu)
worker_cpu_affinity 0001 0010 0100 1000
# work绑定cpu (4work绑定8cpu中的4个)
worker_cpu_affinity 0000001 00000010 00000100 00001000
5:连接数:worker_connection
这个值是表示每个worker进程所能建立连接的最大值,所以,一个nginx 能建立的最大连接数,
应该是worker_connections * worker_processes。当然,这里说的是最大连接数,对于HTTP
请求本地资源来说,能够支持的最大并发数量是worker_connections * worker_processes,
如果是支持http1.1的浏览器每次访问要占两个连接,
所以普通的静态访问最大并发数是: worker_connections * worker_processes / 2
而如果是HTTP作为反向代理来说,最大并发数量应该是worker_connections * worker_proceses/4.
因为作为反向代理服务器,每个并发会建立与客户端的连接和与后端服务的连接,会占用两个连接.
5.1:发送一个请求,占用了worker的几个连接数
2个或4个
5.2:nginx有一个master,四个worker,每个worker支持最大的连接数是1024,支持的最大并发数是多少
worker_connections * worker_processes / 2
worker_connections * worker_proceses/4.
Nginx具体配置(三)的更多相关文章
- nginx下配置多个web服务
参考 nginx配置详解 nginx反向代理与负载均衡详解 一.nginx简介: Nginx("engine x")是一款是由俄罗斯的程序设计师Igor Sysoev所开发高性能 ...
- VMware Linux 下 Nginx 安装配置 - nginx.conf 配置 [负载两个 Tomcat] (三)
首先启动Nginx 1. 相关浏览 两个 Tomcat 配置: VMware Linux 下 Nginx 安装配置 - Tomcat 配置 (二) Nginx 安装配置启动: VMware Linu ...
- Nginx Location配置总结
Nginx Location配置总结 语法规则: location [=|~|~*|^~] /uri/ { - }= 开头表示精确匹配^~ 开头表示uri以某个常规字符串开头,理解为匹配 url路径即 ...
- 理解nginx的配置
Nginx配置文件主要分成四部分:main(全局设置).server(主机设置).upstream(上游服务器设置,主要为反向代理.负载均衡相关配置)和 location(URL匹配特定位置后的设置) ...
- 《深入理解Nginx》阅读与实践(一):Nginx安装配置与HelloWorld
最近在读陶辉的<深入理解Nginx:模块开发与架构解析>,一是想跟着大牛练练阅读和编写开源代码的能力,二是想学学Nginx优秀的架构设计,三是想找一个点深入下Linux下网络编程的细节.侯 ...
- nginx的配置总结
总体而言,nginx的配置比起apache来是要简洁很多,而言容易理解得多的,另外官网的文档也十分的简洁易懂.我们先看一个简化版的配置文件nginx.conf: #user nobody; worke ...
- 图文解说:Nginx+tomcat配置集群负载均衡
图文解说:Nginx+tomcat配置集群负载均衡 博客分类: appserver nginxTomcatUbuntuLinux网络应用 作者:niumd Blog:http://ari.iteye ...
- CentOS 6.6 nginx PHP 配置
/************************************************************************* * CentOS 6.6 nginx PHP 配置 ...
- nginx性能配置参数说明:
nginx的配置:main配置段说明一.正常运行的必备配置: 1.user username [groupname]; 指定运行worker进程的用户和组 2.pid /path/to/pidfile ...
随机推荐
- DevOps知识点——3C知多少
CI / CD是任何DevOps操作的两大基石,这是一种开发软件的方式,旨在生产快速而强大的软件,随时以可持续的方式发布更新. 当例行更改代码时,开发周期会更加频繁.更有意义且更快速.通过此过程,我们 ...
- [Android应用开发] 05.广播和服务
*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...
- 画出决策边界线--plot_2d_separator.py源代码【来自python机器学习基础教程】
import numpy as np import matplotlib.pyplot as plt from .plot_helpers import cm2, cm3, discrete_scat ...
- STM32读取HX711(AD)模块数据——压力传感器
背景:在无人机动力系统的选型时,为了测试无人机的动力系统所能提供的最大拉力,使用压力传感装置测量拉力. 链接: 压力传感器tb链接: HX711模块是一个24位精度的AD模块. (1)https:// ...
- Vue3.0+ElementUI打包之后,为什么部分页面按钮图标找不到
有的页面可以显示这个按钮,有的页面不可以,找了好久,看这都webpack路径问题,到但是我这个没有webpack,没有build文件夹,最后发现是因为没有绑定点击事件 加上这个之后就好了
- PowerPC-object与elf中的符号引用
https://mp.weixin.qq.com/s/6snzjEpDT4uQuCI2Nx9VcQ 一. 符号引用 编译会先把每个源代码文件编译成object目标文件,然后把所有目标文件链接到一起 ...
- Java实现 LeetCode 838 推多米诺(暴力模拟)
838. 推多米诺 一行中有 N 张多米诺骨牌,我们将每张多米诺骨牌垂直竖立. 在开始时,我们同时把一些多米诺骨牌向左或向右推. 每过一秒,倒向左边的多米诺骨牌会推动其左侧相邻的多米诺骨牌. 同样地, ...
- Java实现 LeetCode 677 键值映射(字典树)
677. 键值映射 实现一个 MapSum 类里的两个方法,insert 和 sum. 对于方法 insert,你将得到一对(字符串,整数)的键值对.字符串表示键,整数表示值.如果键已经存在,那么原来 ...
- Java实现 蓝桥杯VIP 算法训练 王后传说
问题描述 地球人都知道,在国际象棋中,后如同太阳,光芒四射,威风八面,它能控制横.坚.斜线位置. 看过清宫戏的中国人都知道,后宫乃步步惊心的险恶之地.各皇后都有自己的势力范围,但也总能找到相安无事的办 ...
- Java实现 蓝桥杯 一步之遥
一步之遥 从昏迷中醒来,小明发现自己被关在X星球的废矿车里. 矿车停在平直的废弃的轨道上. 他的面前是两个按钮,分别写着"F"和"B". 小明突然记起来,这两个 ...