JOBCHER BLOG
nginx 重写规则 rewrite模块
nginx 重写规则 rewrite 模块 语法 语法 默认值 使用字段 作用 break none server, location, if 完成当前设置的重写规则,停止执行其他的重写规则。 set variable value none server, location, if 为给定的变量设置一个特定值。 return code none server, location, if 停止处理并为客户端返回状态码。非标准的 444 状态码将关闭连接,不发送任何响应头。可以使用的状态码有:204,400,402-406,408,410, 411, 413, 416 与 500-504。如果状态码附带文字段落,该文本将被放置在响应主体。相反,如果状态码后面是一个 URL,该 URL 将成为 location 头补值。没有状态码的 URL 将被视为一个 302 状态码。 rewrite_log on rewrite_log off server, location, if 启用时将在 error log 中记录 notice 级别的重写日志。 rewrite regex replacement flag none server, location, if 按照相关的正则表达式与字符串修改 URI,指令按照在配置文件中出现的顺序执行。可以在重写指令后面添加标记。注意:如果替换的字符串以 http://开头,请求将被重定向,并且不再执行多余的 rewrite 指令。尾部的标记(flag)可以是以下的值:last – 停止处理重写模块指令,之后搜索 location 与更改后的 URI 匹配.
JOBCHER BLOG
nginx.conf 配置文件详解
nginx.conf 配置文件详解 1# vim nginx.conf 2user nobody nobody; # 运行 nginx 的所属组和所有者 3worker_processes 2; # 开启两个 nginx 工作进程,一般几个 CPU 核心就写几 4error_log logs/error.log notice; # 错误日志路径 5pid logs/nginx.pid; # pid 路径 6 7events 8{ 9 worker_connections 1024; # 一个进程能同时处理 1024 个请求 10} 11 12http 13{ 14 include mime.types; 15 default_type application/octet-stream; 16 17 log_format main ‘$remote_addr – $remote_user [$time_local] “$request” ‘ 18 ‘$status $body_bytes_sent “$http_referer” ‘ 19 ‘”$http_user_agent” “$http_x_forwarded_for”‘; 20 access_log logs/access.
JOBCHER BLOG
网络基础知识
网络基础知识 1、简述 ISO/OSI 七层模型的分层与作用 分层 作用 应用层 应用系统,提供用户服务 例如:HTTP、HTTPS、FTP、Telnet、SSH、SMTP、POP3 表示层 把数据转换为能与接收者的系统格式兼容并适合传输的格式,数据表示,加密,压缩 会话层 负责在数据传输中设置和维护计算机网络中两台计算机之间的通信连接。确定数据是否需要进行网络传递 分流网络传递还是本地保存 传输层 对数据分组,对报文进行分组(发送时)、组装(接收时)提供传输协议的选择:TCP (传输控制协议) :可靠的,面向连接的传输协议 (可靠,准确) (慢)UDP (用户数据报协议) :不可靠的,面向无连接的传输协议 (快) (不可靠)。端口封装,差错校验,滑动窗口,留空 网络层 网络层(Network Layer)决定数据的路径选择和转寄,将网络表头(NH)加至数据包,以形成分组。网络表头包含了网络资料。例如:互联网协议(IP)等。1.IP 地址编址 2.路由选择 3.静态路由 4.动态路由 数据链路层 数据链路层(Data Link Layer)负责网络寻址、错误侦测和改错。1.MAC 地址编址 2.MAC 地址寻址 3.差错校验 物理层 物理层(Physical Layer)在局域网上发送数据帧(Data Frame)1.数据实际传输 2.电气特性定义 2、TCP/IP 四层模型与作用? 分层 协议 应用层 HTTP、HTTPS、FTP、Telnet、SSH、SMTP、DNS 传输层 TCP、UDP 网络层 ICMP、IGMP、IP、ARP、RARP 数据链路层、物理层 PPP、PPPOE 3、TCP 协议与 UDP 协议工作在哪一层,作用是什么? 传输层,对报文进行分组(发送时)、组装(接收时)提供 当进程需要传输可靠的数据时应使用 TCP,当进程需要高效传输数据,可以忽略可靠性时应使用 UDP 协议。 4、简述 TCP 三次握手的过程。 第一次握手:Client 将标志位 SYN 置为 1,随机产生一个值 seq=J,并将该数据包发送给 Server,Client 进入 SYN_SENT 状态,等待 Server 确认。 第二次握手:Server 收到数据包后由标志位 SYN=1 知道 Client 请求建立连接,Server 将标志位 SYN 和 ACK 都置为 1,ack=J+1,随机产生一个值 seq=K,并将该数据包发送给 Client 以确认连接请求,Server 进入 SYN_RCVD 状态。 第三次握手:Client 收到确认后,检查 ack 是否为 J+1,ACK 是否为 1,如果正确则将标志位 ACK 置为 1,ack=K+1,并将该数据包发送给 Server,Server 检查 ack 是否为 K+1,ACK 是否为 1,如果正确则连接建立成功,Client 和 Server 进入 ESTABLISHED 状态,完成三次握手,随后 Client 与 Server 之间可以开始传输数据了。 5、简述 TCP 包头的内容。 源端口和目的端口:各占 2 个字节,分别写入源端口和目的端口。IP 地址 + 端口号就可以确定一个进程地址
JOBCHER BLOG
docker 安装kong 网关
docker 安装 kong 网关 建立数据库 创建网络 1docker network create kong-net 建立数据库 1docker run -d --name kong-database \ 2 --network=kong-net \ 3 -p 5432:5432 \ 4 -e "POSTGRES_USER=kong" \ 5 -e "POSTGRES_DB=kong" \ 6 -e "POSTGRES_PASSWORD=kong123" \ 7 postgres:9.6 创建 kong 数据 1docker run --rm --network=kong-net \ 2 -e "KONG_DATABASE=postgres" \ 3 -e "KONG_PG_HOST=kong-database" \ 4 -e "KONG_PG_PASSWORD=kong123" \ 5 -e "KONG_PASSWORD=kong123" \ 6 kong:latest kong migrations bootstrap 创建 kong 创建 kong gateway 1 docker run -d --name kong \ 2 --network=kong-net \ 3 -e "KONG_DATABASE=postgres" \ 4 -e "KONG_PG_HOST=kong-database" \ 5 -e "KONG_PG_USER=kong" \ 6 -e "KONG_PG_PASSWORD=kong123" \ 7 -e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \ 8 -e "KONG_PROXY_ACCESS_LOG=/dev/stdout" \ 9 -e "KONG_ADMIN_ACCESS_LOG=/dev/stdout" \ 10 -e "KONG_PROXY_ERROR_LOG=/dev/stderr" \ 11 -e "KONG_ADMIN_ERROR_LOG=/dev/stderr" \ 12 -e "KONG_ADMIN_LISTEN=0.
JOBCHER BLOG
搭建docker registry 镜像仓库
搭建 docker registry 镜像仓库 获取镜像 1docker pull registry:2.7.1 1docker pull hyper/docker-registry-web 容器运行 1mkdir -p /opt/data/registry 2docker run -d -p 5000:5000 -v /opt/data/registry:/var/lib/registry --name registry registry:2.7.1 1docker run -d -p 8080:8080 --name registry-web --link registry \ 2 -e REGISTRY_URL=http://192.168.99.146:5000/v2 \ 3 -e REGISTRY_TRUST_ANY_SSL=true \ 4 -e REGISTRY_BASIC_AUTH="GjhYGDGi2HhkJB" \ 5 -e REGISTRY_NAME=192.168.99.146:5000 \ 6 hyper/docker-registry-web 上传容器 1vim /etc/docker/daemon.json 2{ 3 "insecure-registries": ["192.168.99.146:5000"] 4} 5 6docker tag sjtfreaks/hogo-nginx:v1.1 192.168.99.146:5000/sjtfreaks/hogo-nginx:v1.1 7docker push 192.168.99.146:5000/sjtfreaks/hogo-nginx:v1.1
JOBCHER BLOG
rsync 文件同步
rsync 文件同步 rsync 是一个常用的 Linux 应用程序,用于文件同步 安装 1# Debian or Ubuntu 2$ sudo apt-get install rsync 3 4# Red Hat 5$ sudo yum install rsync 6 7# Arch Linux 8$ sudo pacman -S rsync 基本用法 使用 rsync 命令时,可以作为 cp 和 mv 命令的替代方法,将源目录同步到目标目录。 -r 表示递归,即包含子目录。注意,-r 是必须的,否则 rsync 运行不会成功。source 目录表示源目录,destination 表示目标目录。 -a 参数可以替代-r,除了可以递归同步以外,还可以同步元信息(比如修改时间、权限等)。由于 rsync 默认使用文件大小和修改时间决定文件是否需要更新 1rsync -r source destination 远程同步 1rsync -av <源地址>/ <用户名>@<ip地址>:/<目标地址> 友情地址:mysql 迁移
JOBCHER BLOG
helm 安装
helm 安装 脚本安装 1curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 2chmod 700 get_helm.sh 3./get_helm.sh 4 5#或者可以使用这个命令 6curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash 7 8helm help 二进制安装 1wget https://get.helm.sh/helm-v3.7.2-linux-amd64.tar.gz 2tar -zxvf helm-v3.7.2-linux-amd64.tar.gz 3cd helm-v3.7.2-linux-amd64 4mv linux-amd64/helm /usr/local/bin/helm 5helm help
JOBCHER BLOG
k8s 部署loki日志
k8s 部署 loki 日志 helm 拉取 loki 1#加源 2helm repo add grafana https://grafana.github.io/helm-charts 3helm repo update 4#拉取 5helm fetch grafana/loki-stack --untar --untardir . 6cd loki-stack 7# 生成 k8s 配置 8helm template loki . > loki.yaml 9# 部署(如果要修改默认配置必须要修改一下yaml) 10k3s kubectl apply -f loki.yaml
JOBCHER BLOG
获取用户浏览器默认语言设置,自动判断跳转不同网站
自动判断跳转不同网站 根据用户目前的浏览器配置语言进行显示 供语言切换按钮,用户自定义选择不同的语言显示 根据识别用户的浏览器语言,自动判断并跳转到相应的语言网页,让你的网站更加灵动。 以下需要将代码放在 HTML 的内即可,然后自行制作多语言页面。 代码如下: 1<script type="text/javascript"> 2 //获取用户语言的顺序是 3 //1.获取本地缓存里的内容 4 //2.用户浏览器的语言设置 5 //如果上面2个都没有获取到,就直接使用'en'作为用户选择的语言 6 var language = 7 localStorage.getItem("locale") || 8 window.navigator.language.toLowerCase() || 9 "en"; 10 //把用户的语言写入缓存,供下次获取使用 11 localStorage.setItem("locale", language); 12 //判断用户的语言,跳转到不同的地方 13 if (language.indexOf("zh-") !== -1) { 14 window.location = "/zh-cn/index.html"; 15 } else if (language.indexOf("en") !== -1) { 16 window.location = "/en/index.html"; 17 } else { 18 //其它的都使用英文 19 window.location = "/en/index.html"; 20 } 21</script> 核心代码
JOBCHER BLOG
linux服务基础知识
linux 服务基础知识 1、哪些设置能够提升 SSH 远程管理的安全等级 2、ssh 连接时认证时间过长如何解决? 3、scp 和 rsync 进行远程文件复制有什么区别? 4、请描述通过 DHCP 服务器获取 IP 地址的过程。 5、简单描述 FTP 的主动模式和被动模式的区别? 6、集群环境中,如何保证所有服务器之间的时间误差较小。 7、请描述用户访问网站时 DNS 的解析过程。 8、解释权威 DNS 和递归 DNS 的含义,并描述智能 DNS 的实现原理。 9、公司里有一台服务器,需要在上面跑两个网站,并且其中一个网站需要更换新域名,请问如何处理? 网站1:www.a.com 网站2:www.b.com(旧) www.d.com(新) 10、简述 Apache 的三种工作模式? 11、请写出工作中常见的 Apache 优化策略。 12、有哪些技术可以提高网站的安全和效率? 13、Apache 和 Nginx 各有什么优缺点,应该如何选择? 14、为什么 Nginx 的并发能力强,资源消耗低? 15、写出几个 Nginx 的常用模块,并描述其功能。 16、请解释 Nginx 是如何连接 PHP 进行页面解析的? 17、请描述 Nginx 和 Tomcat 之间的数据传输过程? 18、请写出几个常见的 HTTP 状态码,并解释出现原因。
JOBCHER BLOG
mysql基础知识
mysql 基础知识 1、库表 student.report,有 3 个字段,姓名、学科、成绩,记录如下,根据要求完成 SQL 语句: Name Subject Result 李白 Math 95 张三 English 83 王五 Math 79 李六 Math 85 张二 English 74 查询姓李的同学的个数。 查询表中数学成绩大于 80 的前 2 名同学的名字,并按分数从大到小的顺序排列。 2、MYSQL 集群一主多从,主库宕机,如何合理切换到从库,其它从库如何处理? 3、单台 MySQL 达到性能瓶颈时,如何击碎性能瓶颈? 4、MySQL 什么时候创建索引? 5、误操作 drop 语句导致数据库数据破坏,请给出恢复的实际大体步骤。 6、如何保证 Redis 能永久保存数据? 7、如何利用 Redis 对 MySQL 进行性能优化?
JOBCHER BLOG
shell基础知识
shell 基础知识 1、有一个 b.txt 文本(内容如下),要求将所有域名截取出来,并统计重复域名出现的次数: http://www.baidu.com/index.html https://www.atguigu.com/index.html http://www.sina.com.cn/1024.html https://www.atguigu.com/2048.html http://www.sina.com.cn/4096.html https://www.atguigu.com/8192.html 2、统计当前服务器正在连接的 IP 地址,并按连接次数排序 3、使用循环在/atguigu 目录下创建 10 个 txt 文件,要求文件名称由 6 位随机小写字母加固定字符串(_gg)组成,例如:pzjebg_gg.txt。 4、生成随机数字。 5、批量检查多个网站是否可以正常访问,要求使用 shell 数组实现,检测策略尽量模拟用户真实访问模式。 http://www.atguigu.com http://www.gulixueyuan.com http://www.baidu.com