day109Linux笔记 web知识博客:https://www.cnblogs.com/pyyu/p/9467256.html nginx博客:https://www.cnblogs.com/pyyu/p/9468680.html nginx负载均衡博客:https://www.cnblogs.com/pyyu/p/10004633.html 昨日内容回顾: nginx安装配置 nginx目录下的sbin文件夹nginx绿色的执行文件 nginx底下的conf文件夹nginx.conf是主配置文件 nginx.conf通过闭合的大括号,来确定代码作用域 server{}标签定义虚拟主机 server{ listen 80; server_name 域名或者ip地址; www.s14.com #网站访问的路径匹配 # www.s14.com/s14.png # www.s14.com/index.html location / { #root参数定义,这个虚拟主机访问入口时,定位的资源文件放在哪 #用于定义虚拟主机,网站根目录 root /data/static/; #如果我在这放了一个图片 /data/static/s14.png index index.html #定义默认的首页文件名叫做/data/static/index.html } }多个标签,定义多个虚拟主机 #错误页面的定义 这个/40x.html,代表必须在root定义的网页根目录下,存在/data/static/40x.html,如果没有文件则touch 40x.html # www.s14.com/weqwewqe12312312312 errror_page 状态码 400 401 404 /40x.html #访问日志,打开配置文件的注释即可 #web服务基础知识 c/s 客户端/服务器 b/s 浏览器/服务器 nginx > web server 服务端 浏览器 > web client 客户端 #dns解析流程 1.首先用户输入一段url,在浏览器 www.oldboyedu.com 2.(dns解析的第一步)浏览器会首先在你的机器上,寻找一个hosts文件,这是本地测试dns解析文件 2.(第二步)如果hosts文件未指定解析记录,浏览器就去机器的dns缓存中寻找解析记录 LDNS(local dns缓存) 3.(第三步)如果缓存也没有记录,去指定的dns服务器中(手动配置,linux底下/etc/reslove.),去网络中寻找解析记录 /etc/resolv.conf 写入两条dns记录 主dns服务器 nameserver x.x.x.x 备dns服务器 nameserver x.x.x.x linux解析dns的命令 nslookup(nameserver lookup 域名服务器查找 ) 4.dns服务器会将查找到的ip和域名对应的记录,返回给浏览器,浏览器就知道访问的ip服务器是谁了 5.此时操作系统会将这条解析记录,写入到本地dns缓存中,LDNS #状态码 300系列就是 你访问的url经过重定向redirect, baidu.com > diaoyu.baidu.com nginx location语法: location支持的语法优先级: 复制代码 location匹配顺序 # www.s14hanju.com/ 1.location = / { 我是代码1 } 精确匹配 # www.s14hanju.com/images/ 2.location ^~ /images/ { 我是代码2 } 匹配常规串,不做正则检查 # www.s14hanju.com/xxx.gif #www.s14hanju.com/xxx.jpg #www.s14hanju.com/xxx.gif #www.s14hanju.com/xxx.jpeg 3.location ~* \.(gif|jpg|jpeg) { 我是代码3 } 正则匹配 #优先级为4, www.s14hanju.com/av/xx资源 4. location /av/ { 我是代码4 } 匹配常规字符,有正则优先正则 #如果你谁都没匹配到的话,默认走/,走网页根目录,优先级最低 5.location / { 我是代码5 } 所有的location都不匹配后,默认匹配 #location语法实战 ##最低优先级5 ,谁都找不到的时候,匹配 #最低匹配度,谁都找不到匹配 www.s14hanju.com/hello www.s14hanju.com/reg www.s14hanju.com/login #我的请求发给nginx的时候,nginx不做处理,直接返回给django location / { uwsgi_pass http:0.0.0.0:8000; } #通过 = 精确匹配,优先级1 location =/ { return 402; } #通过常规字符匹配,匹配/documents/ 优先级4 location /documents/ { return 403; } #匹配常规字符,且不做正则,优先级为2 location ^~ /images/ { return 404; } #匹配资源请求是图片等的话,优先级为3 #如果你想请求图片资源,就直接丢给nginx去做处理 #nginx处理静态资源更为优秀 #alias 给location配置一个文件工作目录 location ~* \.(gif|jpg|jpeg|mp4)$ { alias /data/static/ } } #动静分离的效果,动态请求直接location匹配,转发给django #静态资源请求,解析到转发给nginx直接处理 #正向代理 #代理的是客户端 #反向代理 #代理的是服务端 #nginx的反向代理功能就是 proxy_pass参数 1.配置方式,准备2台机器 在机器1中,添加参数 server { listen 80; server_name www.s14huoying.com; location / { proxy_pass http://192.168.12.38; #请求会直接转发给node2节点,也就是http://192.168.12.38; } 2.在两台机器上,检测access.log ,查看请求来源 710144 GB = 710TB 1024KB 1MB 1024MB 1GB 1024GB 1TB xshell的快捷用法: 找到查看 > 撰写 >撰写栏 nginx负载均衡配置 1.环境准备,准备3台服务器 192.168.12.96 nginx入口node1 192.168.12.67 康琛的应用服务器 192.168.12.38 伟华的应用服务器 2.关闭所有机器的防火墙 3.在node1节点上配置负载均衡配置(发牌人) 1.修改配置文件nginx.conf ,写入如下配置 #定义负载均衡池名字叫做s14django upstream s14django { #池子中存放2个服务器,默认轮训方式调度服务器 server 192.168.12.38:8000; server 192.168.12.67:8000; } #root参数定义网页的根目录,可以写在虚拟主机内,局部变量 #如果写在server标签外,就是全局变量 root html; #虚拟主机1 server { listen 80; server_name www.s14huoying.com; location / { #当请求发送到www.s14huoying.com的时候,匹配到 / ,就执行以下代码 proxy_pass http://s14django; #包含语法参数,将一个配置文件添加到当前虚拟主机生效,这个文件要手动创建 #这个proxy_params文件创建在/opt/nginx1-12/conf底下 include proxy_params; } } 2.手动创建这个参数文件 touch /opt/nginx1-12/conf/proxy_params 写入信息 proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_connect_timeout 30; proxy_send_timeout 60; proxy_read_timeout 60; proxy_buffering on; proxy_buffer_size 32k; proxy_buffers 4 128k; 4.配置weihua的应用服务器 1.准备一个flask代码,运行 pip3 install flask 2.准备代码 myflask.py from flask import Flask app=Flask(__name__) @app.route('/') def hello(): return "<h1>我是伟华</h1>" if __name__=="__main__": app.run(host='0.0.0.0',port=8000) 3.启动应用服务器 python3 myflask.py 5.配置chenchen的应用服务器 1.准备一个flask代码,运行 pip3 install flask 2.准备代码 myflask.py from flask import Flask app=Flask(__name__) @app.route('/') def hello(): return "<h1>我是琛琛</h1>" if __name__=="__main__": app.run(host='0.0.0.0',port=8000) 3.启动应用服务器 python3 myflask.py 6.通过访问nginx负载均衡器入口,查看负载均衡 是否正常分配,默认是轮训方式 1.访问自己的nginx负载均衡的ip地址,查看结果 redis持久化 RDB 基于快照的持久化 通过save命令,强制持久化 在redis.conf中 dbfilename dbmp.rdb save 900 1 save 300 10 save 60 10000 AOF 将修改命令,全部收集写入到一个aof文件中 appendonly yes appendfsync everysec #每秒钟记录一次变化 RDB数据切换AOF数据的操作 1.准备redis.conf配置文件,确保开启rdb功能,配置参数如下 port 6379 daemonize yes pidfile /data/redis.pid loglevel notice logfile "/data/redis.log" dir /data/ dbfilename dbmp.rdb save 900 1 save 300 10 save 60 10000 2.启动redis服务端 redis-server redis.conf 3.插入redis数据,通过save命令,强制写入持久化rdb文件(此时还是使用rdb持久化) set name shahe set age 11 save 4.通过命令,切换到aof持久化,(注意此步只是临时生效,必须将AOF的配置,写入redis.conf) 127.0.0.1:6379> CONFIG set appendonly yes #开启AOF功能 OK 127.0.0.1:6379> CONFIG SET save "" #关闭RDB功能 OK 5.修改配置文件,添加aof参数,(此步重启后,rdb持久化完全切换aof持久化,且数据保持一致) port 6379 daemonize yes pidfile /data/redis.pid loglevel notice logfile "/data/redis.log" dir /data/ appendonly yes appendfsync everysec 6.重启redis服务 redis主从复制: 1.环境准备3个redis实例 redis-6380.conf redis-6381.conf redis-6382.conf 三个配置文件的区别,仅仅是端口的不同修改即可 port 6380 daemonize yes pidfile /data/6380/redis.pid loglevel notice logfile "/data/6380/redis.log" dbfilename dump.rdb dir /data/6380 protected-mode no 2.启动三个redis实例 redis-server 6380.conf redis-server 6381.conf redis-server 6382.conf 3.此时可以查看redis身份信息,通过info参数()此时还未配置主从,因此都是master身份 redis-cli -p 6382 info Replication redis-cli -p 6381 info Replication redis-cli -p 6380 info Replication 4.配置从节点的身份(6380为主,6381,6382为从),通过命令指明master节点信息即可 127.0.0.1:6381> SLAVEOF 127.0.0.1 6380 127.0.0.1:6382> SLAVEOF 127.0.0.1 6380 5.查看各个各个节点的身份信息 redis-cli -p 6382 info Replication 从节点 redis-cli -p 6381 info Replication 从节点 redis-cli -p 6380 info Replication ()主节点 #手动切换主从身份 1.将主节点挂掉 kill -9 主节点 6380 2.将6382去掉slave的身份 redis-cli -p 6382 slaveof no one 3.将6381设置新的主人,设置为6382 redis-cli -p 6381 slaveof 127.0.0.1 6382 #通过配置文件,决定主从身份 1.在配置文件中,添加一条参数即可(主节点不做配置,从节点指明主人的ip端口信息即可) port 6380 daemonize yes pidfile /data/6380/redis.pid loglevel notice logfile "/data/6380/redis.log" dbfilename dump.rdb dir /data/6380 protected-mode no slaveof 127.0.0.1 6381
来源:https://www.cnblogs.com/bozhengheng/p/12180599.html