Nginx小记

Nginx 反向代理服务器

文章目录

  • Nginx 反向代理服务器
    • Linux 上nginx安装
        • 1,pcre依赖
        • 2,zlib依赖
        • 3,nginx
        • 4 nginx常用命令
      • 5 nginx 配置文件
      • 5 nginx反向代理配置
        • 5.1 Nginx反向代理配置1
        • 5.1 反向代理配置2(跳转多个)
          • 配置nginx.conf
      • 6,nginx 负载均衡
        • 6.1 nginx.conf配置
        • 6.2 分配策略
      • 7 nginx动静分离
        • 7.1 nginx配置
      • 8.nginx高可用集群
        • 8.1 服务器配置
        • 8.2 nginx高可用配置实例
        • nginx原理解析

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

Linux 上nginx安装

1,pcre依赖

  • 下载pcre, tar 解压,cd 到目录,./configure, make&&make install编译安装, pcre --version检查安装版本

2,zlib依赖

3,nginx

  • 安装下载,tar解压,cd到目录,./configure,make&&meke install, nginx --version
  • 启动cd /usr/local/nginx/sbin &&./nginx
  • 检查启动:ps -ef | grep nginx
  • 配置文件:vim nginx/conf/nginx.conf
    • listen 80:默认80端口 #例访问nginx:192.168.17.129
  • 查看防火墙开放端口:firewall-cmd --list-all
  • 给防火墙把nginx访问端口开放
    • 添加开发端口:sudo firewall-cmd --add-port=80/tcp --permanet
    • 重启防火墙:firewall-cmd restart

4 nginx常用命令

  • 使用命令需要进入nginx目录
  • 查看v:./nginx -v
  • 启动:./nginx
  • 关闭:./nginx -s stop
  • 配置文件重加载:./nginx -s reload

5 nginx 配置文件

  • 位置:vim /usr/local/nginx/nginx.conf
  • 三部分组成:1,全局块,2,events块,http块
  • 1,全局块:从配置文件开始到events之间内容,设置影响nginx整体运行的配置指令,主要包括配置运行Nginx服务器的用户(组),允许生成worker process 数,进程PID存放路径,日志存放路径和类型以及配置文件的引入等
    • worker_processes:并发处理量
  • 2,ecents块:涉及Nginx 与用户的网络连接
    • work connections:支持最大连接数
  • 3,http 全局块(重点):包含两部分→http块,server块
    • 1,http
    • 2,server
      • listen:监听当前主机端口号
      • server_name:主机名
      • location /:请求跳转

5 nginx反向代理配置

  • 目的:打开浏览器,输入url,直接跳转到linux tomcat主页面
  • 准备工作:tomcat
  • 解压tomcate:cd bin/目录, ./startup.sh启动
  • 对外开发访问端口:firewall-cmd -add-port=8080/tcp -permannet
  • 查看开发端口:firewall-cmd --list-all 是否有楼上的端口
  • window访问tomcate

5.1 Nginx反向代理配置1

  • windows系统host文件进行域名和ip对应关系的配置
  • win host文件默认位置: C:Windows//System32//drivers/etc/HOSTS
  • win host添加: 服务器IP地址(例:192.168.17.129)和域名(例:www.123.com)
  • ** nginx请求转发配置:**
  • server:
    • 修改server_name为服务器IP地址 192.168.17.129:80
    • location /{}中添加转发路径: proxy_pass http://127.0.0.1:8080 (如果访问的是192.168.17.129:80 就会转发到127.0.0.1:8080);保存退出 并加载配置文件,启动nginx
    • 以上的80,8080端口都要对外开发

5.1 反向代理配置2(跳转多个)

配置nginx.conf
  • 增加一个server
  • 修改监听端口:服务器监听端口
  • 修改server_name:用户请求的服务器地址
  • 正则写法:例:
`local ~/edu/ { proxy_pass http://127.0.0.1:8081;} #  写多个`
    • 1,=:不含正则uri前,要求字符串与uri严格匹配,如果匹配成功,停止继续向下搜索,并立即处理该请求
    • 2,~:用户uri包含正则表达式,并区分大小写
    • 3,~*:用户uri包含正则表达式,并不区分大小写
    • 4,^~:用户不包含正则表达式uri前,要求Nginx服务器找到表示uri 和请求字符传匹配度最高的 location 后,立即使用此 localtion 处理请求, 而不适用localtion 块中的正则 uri 和请求字符串做匹配
    • 注意:如果uri 包含正则表达式,则必须要有 ~ 或者 ~* 标识。
  • 开发服务器对外访问端口号
  • 重加载nginx || 重启

6,nginx 负载均衡

  • 将请求平均分配给服务器

6.1 nginx.conf配置

  • http块怎加服务器列表:例:
 upstream myserver {
  	server 192.168.17.129:8080  
  	server 191.168.17.129:8080}
  • server块加规则请求分配:例:修改server_name为被请求服务器ip:192.168.17.129
    • location /{} 增加服务器名称:例:
location / {
	 proxy_pass http://myserver
	   }

6.2 分配策略

  • 轮询(默认): 每个请求按时间顺序逐一分配到不同的后端服务器,如果服务器宕机了,能自动剔除
  • weight(权重): 权重默认为1,权重越高被分配的客户端越多
upstreat myserver {
	server 192.168.17.129:8080 weight=5;
	server 192.168.17.129:8081 weight=10;
}
  • ip_hash: 每个请求按访问ip 的hash 结果分配,这样每个访问固定访问一个后端服务器,可以决议解决session共享 的问题。例:
upstream server_pool{
ip_hash #用户指定访问一台服务器
	server 192.168.5.21:80
	server 192.168.5.22:80
}
  • fair(第三方): 按后端服务器的响应时间来分配请求,响应时间短的优先分配。
upstream server_pool{
	server 192.168.5.21:80
	server 192.168.5.22:80
	fair
}

7 nginx动静分离

7.1 nginx配置

server {
	listen 80;
	server_name 192..168.17.129; #当前ip
	location /www/ {
		root /data/;# 目标目录
		index index.html index.htm;
	}
	location /www/ {
		root /data/;#目标目录
		autoindex on; #列出当前文件夹内容
	}
}
  • 测试:http://192.168.17.129/image/o1.jpg

8.nginx高可用集群

  • 防止 nginx宕机/使用备份服务器完成请求
  • keepalived :路由作用,通过绑定虚拟ip 访问

8.1 服务器配置

  • keepalived安装:yum install keepalived -y
  • 安装之后,在etc 里面生成目录keepalived, keeplaived.conf

8.2 nginx高可用配置实例

  • vim keepalived.conf
  • 查询网卡:ipconfig
  • 查看服务器名:vim /etc/host 添加有一个主机名 例:127.0.0.1 LVS_DEVELBACK
  • 一下配置好后放到conf
#全局定义:
global_defs{
router_id LVS_DEVELBACK #访问到主机名字
}
# 检查脚本配置,权重作用
vrrp_script chk_http_port{
	script "/usr/local/src/nginx_check.sh" #脚本地址检查nginx是否可用
	interval 2 #检测脚本执行间隔时间
	weight 2 #权重:脚本条件成立,当前服务器的权重降低
}
# 虚拟IP
vrrp_instance_VI_1{
	state MASTER #备份服务器将(主)MASIER 改为 BACKUP
	interface ens33 // #网卡名 在网卡上绑定虚拟ip
	virtual_router_id 51 #主,备机的virtual_router_id 必须相同
	priority 100 #主,备取不同的优先级,主机值较大,备份机值较小
	advert_int 1 #每隔1秒检测服务器心跳
	authentication { #权限校验方式,此为密码
		auth_type PASS
		auth_pass 1111
	}
	virtual_ipaddress {
	192.168.17.50 // VRRP H  #虚拟地址IP,可绑定多个IP
	}
}
  • 检测脚本样例
#!/bin/bash
A='ps -C nginx -no-header | wc -1' # -C 接命令名称跟p grep一样
if [$A -eq 0];then
	/usr/local/nginx/sbin/nginx #nginx启动路径
	sleep 2
	if ['ps -C nginx -no-header | wc -1' -eq 0];then
		killall keepalived #nginx挂了,杀掉,启动从服务器
	fi
fi

  • 修改/etc/keepalived/keepalived.conf
  • 在/usr/local/src 添加检测脚本
  • 启动nginx ,keepalived
    • ./nginx
    • systemctl start keepalived.service
  • 输入虚拟IP测试能否访问nginx
    • ip a 可以看到绑定的虚拟IP
  • 停止主服务器测试备份服务器访问

nginx原理解析

  • nginx内两个进程:master / worker(可多个)
    • master/worker 工作解析:client发送请求到nginx中,master得到请求并发给worker(worder采用争抢机制)
    • 一个master,多个woder好处1,利于热部署,可以使用 nginx -s reload 热加载 ,2每个worker是一个独立的进程,如果其中一个出现问题,还可以继续争抢处理请求
    • 设置worker进程数量合适:worker和服务器cpu 数量相等为适宜
    • worker连接数 worker_connection:发送一个请求占用worker 2个或者4个(发送请求访问静态资源,返回请求使用两个worker,而动态资源4个),每个worker支持最大连接数1024,支持最大并发数请求为→worker数 *1024/worker数
      Nginx小记_第1张图片

你可能感兴趣的:(Nginx)