nginx last 和 break 的区别

2020年11月13日 没有评论

1. last 和 break 当出现在location 之外时,两者的作用是一致的没有任何差异。 注意一点就是,他们会跳过所有的在他们之后的rewrite 模块中的指令,去选择自己匹配的location 2. last 和 break 当出现在location 内部时,两者就存在了差异。 last: 使用了last 指令,rewrite 后会跳出location 作用域,重新开始再走一次刚刚的行为。 break: 使用了break 指令,rewrite后不会跳出location 作用域。它的生命也在这个location中终结。   网友解释通俗易懂: last: 重新将rewrite后的地址在server标签中执行 break: 将rewrite后的...

分类: nginx 标签:

Nginx中的rewrite指令(break,last,redirect,permanent)

2020年11月13日 1 条评论

rewite 在 server 块下,会优先执行 rewrite 部分,然后才会去匹配 location 块。因为 server 块中 rewrite 的 break 和 last 没什么区别,执行完后都会再去匹配 location,所以 server 块中的 rewrite 标志可以留空,不需要用 last 再发起新的请求。 location中的rewirte: 不写 last 和 break,那么流程就是依次执行这些 rewrite。 1. rewrite break: url 重写后,直接使用当前资源,不再执行 location 里余下的语句,完成本次请求,地址栏 url 不变。 2. rewrite last: url 重写后,马上发起一个新的请求,再次进入 server 块,重试...

分类: nginx 标签:

nginx 正则表达式,如何匹配不以/ .xml .html .htm等结尾

2020年11月13日 没有评论

构建正则表达式用在nginx上,匹配不以给定字符串结尾的字符。 例如,把如下这两种非 html 结尾的地址重定向到 html结尾 https://www.redis.com.cn/commands/append/ https://www.redis.com.cn/commands/append 重定向到 https://www.redis.com.cn/commands/append.html 经过分析我们知道第一种是要把url结尾的斜杠 / 去掉加上 .html ,第二种是把以非斜线 / 和 .html 结尾的url加上 .html 。 对于普通 [^] 是单个字符判断,并不是按顺序判断。我们需要使用否定反向环视: .*(?<!\.html|\//)$ (?<!patter...

分类: nginx 标签:

redhat7 使用 rpm 安装 nginx

2020年11月12日 没有评论

1.下载合适的版本 http://nginx.org/packages/rhel/7/x86_64/RPMS/ 2.执行安装命令 rpm -ivh nginx-1.18.0-2.el7.ngx.x86_64.rpm 警告:nginx-1.18.0-2.el7.ngx.x86_64.rpm: 头V4 RSA/SHA1 Signature, 密钥 ID 7bd9bf62: NOKEY 准备中... ################################# [100%] 正在升级/安装... 1:nginx-1:1.18.0-2.el7.ngx ################################# [100%] 3.启动nginx服务 在命令行输入nginx后回车即可 4.配置文件位置:/etc/nginx/conf.d/

分类: nginx 标签:

docker 启动 redis 报 `undefined symbol: seccomp_version` 错误的解决办法

2020年10月23日 没有评论

通过 docker 部署 redis,启动 docker 时需要依赖 containerd。其实跟 redis 关系不大,主要是 docker 依赖于 containerd。安装完成 docker 启动后可能会遇到如下错误: ./containerd: symbol lookup error: ./containerd: undefined symbol: seccomp_version 1 ./containerd: symbol lookup error: ./containerd: undefined symbol: seccomp_version缺少对应版本的 libseccomp, 有两种可能:系统没有安装 libseccomp 系统安...

分类: linux, redis 标签:

rack是什么

2020年10月22日 没有评论

rack 是一种中间件,它工作在你的 web 应用程序和 web 服务器之间。可能是由于大家都主要使用框架,所以介绍 rack 的中文文档比较少。 rack 处理所有服务器特定的 API 调用,将 HTTP 请求和所有环境参数通过 hash 传递应用程序,然后把应用程序的响应返回给服务器。换句话说,应用程序不需要知道如何与 HTTP 服务器通信,而是需要知道如何与 Rack 通信。rack 抽象了底层的 web 服务器交互代码(不论底层的web服务器是什么),只需要按照 rack 约定格式写程序,就可以快速提供 web 服务。 如何判断一个 ruby 程序是不是 rack 应用,可同...

分类: 编程语言 标签:

systemd 无 ExecStop 停止服务原理

2020年10月22日 没有评论

systemd 代替 init,可以帮助我们不用写复杂的脚本来启停服务,大多数情况下配置 ExecStart 就能完成基本任务。很多人会对关闭表示疑问:很多 unit 文件中只有 ExecStart 命令,没有ExecStop、ExecReload命令也能实现关闭和重启,这是为什么? 例如,关闭防火墙服务执行systemctl stop firewalld。 执行后,如果没有配置ExecStop,Systemd 默认将发送SIGTERM信号到主进程,并等待TimeoutStopSec配置的时间后查看进程是否已终止,如果没配置这个时间默认是90s。 90s以后,systemd 会检查进程有没有停止成功,如果还没停止,则 systemd ...

分类: linux 标签:

centos8编译安装mysql5.7.29

2020年9月24日 没有评论

本文完美在centos7或8下验证mysql5.7的安装,解决了/var/run文件不能创建的问题,并且创建了systemd文件来管理mysql启动和关闭。 mysql安装前的准备: 编译环境依赖 yum -y install cmake make gcc gcc-c++ bison ncurses ncurses-devel 1 yum -y install cmake make gcc gcc-c++ bison ncurses ncurses-devel下载安装包 wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.29.t...

分类: linux, mysql 标签:

firewall 防火墙打开http和https端口

2020年9月23日 没有评论

centos使用firewall替换了iptables,操作起来更加语义化,例如永久开放防火墙80端口和443端口。 firewall-cmd --add-service=http --permanent firewall-cmd --add-service=https --permanent firewall-cmd --reload 123 firewall-cmd --add-service=http --permanentfirewall-cmd --add-service=https --permanentfirewall-cmd --reload

分类: linux 标签:

centos下php编译安装redis扩展

2020年9月22日 没有评论

安装redis扩展前,假设已经安装好php、nginx,他们的安装路径如下: php安装目录:/usr/local/php php.ini配置文件路径:/usr/local/php/etc/php.ini Nginx安装目录:/usr/local/nginx Nginx网站根目录:/usr/local/nginx/html   1、安装编译工具 yum install wget  make gcc gcc-c++ zlib-devel openssl openssl-devel pcre-devel kernel keyutils  patch perl 2、安装redis扩展 cd /usr/local/src #进入软件包存放目录 wget http://pecl.php.net/get/redis-3.1.0.tgz #下载 tar zxf redis-3.1.0.tgz #解压 cd redis-3.1.0 #进入...

分类: nginx 标签: