架构师日记——Nginx的Rewrite模块配置

Rewrite模块

用来执行URL重定向。这个机制有利于去掉恶意访问的url,也有利于搜索引擎优化(SEO)

Nginx使用的语法源于Perl兼容正则表达式(PCRE)库

基本语法如下:

  • ^:必须以^后的实体开头,如^abc,必须以abc开头
  • $:必须以$前的实体结尾,如abc$,必须以abc结尾
  • .:匹配任意字符
  • []:匹配执行字符集内的任意字符,如[1-9],可以匹配1到9任何一个
  • [^]:匹配任何不包括在指定字符集内的任意字符串,如[^1-9],可以匹配1到9以外的任何一个
  • |:匹配|之前或之后的实体,如(html|js|css),可以匹配html,js,css的任何一个
  • ():分组,组成一组用于匹配的实体,通常会有|来协助

通常在上面的规则后还会加上一些匹配多少个的符号

  • *:0到多个
  • :0到1个
  • +:1到多个

    捕获子表达式,可以捕获放在()之间的任何文本,比如:
    匹配规则:^(.*)(hello|sir)$
    字符串:”hi sir”
    捕获的结果:$1=hi $2=sir
    这些被捕获的数据,在后面就可以当变量一样使用了

外部请求和内部请求

外部请求是客户端的url,内部请求是Nginx通过特殊的指令触发。
比如:error_page、index、rewrite、try_files、include等等

内部请求分成两种类型

  1. 内部重定向:URI被改变,可能会匹配到其他的Location
  2. 子请求:比如使用Addition模块,指令add_after_body孕育你在原始的URI之后指定一个URI,会把该URI被处理后的结果,插入到原始的URI的body中

内部重定向示例

server{
    server_name abc;
    location /abc/{
        rewrite ^/abc/(.*)$ /bcd/$1
    }
    location /bcd/{
        internal;
        root pages;
    }
}

条件结构的基本语法

  1. 没有操作符:指定的字符串或者变量不为空,也不为0开始的字符串,取true
  2. =,!=,例:if($request_method = POST){…}
  3. ~,~*,!~,!~*,例:if( uri "\.jsp ”){…}
  4. -f,!-f:用来测试指定文件是否存在,例:if(-f $request_filename){…}
  5. -d,!-d:用来测试指定目录是否存在
  6. -e,!-e:用来测试指定文件、目录或者符号链接是否存在
  7. -x,!-x:用来测试指定文件是否存在和是否可以执行
  8. break:跳出if块
  9. return:中止处理,并返回一个指定的http状态码
  10. set:初始化或者重定义一个变量
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Nginx是一款高性能的Web服务器软件,它支持SSL/TLS协议,可以为Web应用程序提供安全的访问。本文将介绍如何在Nginx上开启SSL模块,并配置SSL证书,使得Web应用程序支持HTTPS访问。 1. 安装SSL模块 在编译Nginx的时候,需要开启SSL模块。可以在编译选项中加入--with-http_ssl_module参数来开启SSL模块。如果使用的是预编译的二进制包,可以通过查看nginx.conf文件来确定是否开启了SSL模块。如果存在以下配置项,则说明SSL模块已经开启。 ``` listen 443 ssl; ssl_certificate /path/to/cert.pem; ssl_certificate_key /path/to/key.pem; ``` 2. 配置SSL证书 SSL证书用于加密网站和客户端之间的通信,防止敏感信息在传输过程中被窃取。可以购买SSL证书,也可以使用免费的证书,例如Let's Encrypt。 在配置SSL证书之前,需要先生成证书和私钥。可以使用如下命令生成自签名证书和私钥。 ``` openssl req -newkey rsa:2048 -nodes -keyout server.key -x509 -days 365 -out server.crt ``` 生成的server.key和server.crt文件分别是私钥和证书。接下来,需要将证书和私钥拷贝到Nginx配置文件所在的目录。 ``` cp server.crt /etc/nginx/ cp server.key /etc/nginx/ ``` 然后,在Nginx配置文件中添加以下配置项,指定证书和私钥的路径。 ``` ssl_certificate /etc/nginx/server.crt; ssl_certificate_key /etc/nginx/server.key; ``` 3. 配置SSL协议和加密算法 在Nginx配置文件中,可以配置SSL协议和加密算法。可以使用如下配置项指定SSL协议。 ``` ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ``` 可以使用如下配置项指定加密算法。 ``` ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; ``` 4. 配置HTTPS监听端口 在Nginx配置文件中,可以使用如下配置项开启HTTPS监听端口。 ``` server { listen 443 ssl; server_name example.com; ssl_certificate /etc/nginx/server.crt; ssl_certificate_key /etc/nginx/server.key; location / { # 配置Web应用程序的根目录 root /var/www/html; index index.html; } } ``` 在以上配置中,listen 443 ssl指定了HTTPS监听端口,并且ssl_certificate和ssl_certificate_key指定了SSL证书和私钥的路径。location /用于配置Web应用程序的根目录。 5. 重启Nginx服务 完成以上配置后,需要重启Nginx服务,使得配置生效。 ``` service nginx restart ``` 通过以上步骤,就可以在Nginx上开启SSL模块,并配置SSL证书,使得Web应用程序支持HTTPS访问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值