nginx rewrite 正则表达式匹配
大小写匹配
~ 为区分大小写匹配
~* 为不区分大小写匹配
!~和!~*分别为区分大小写不匹配及不区分大小写不匹配
文件及目录匹配
-f和!-f用来判断是否存在文件
-d和!-d用来判断是否存在目录
-e和!-e用来判断是否存在文件或目录
-x和!-x用来判断文件是否可执行
flag标记
last 相当于Apache里的[L]标记,表示完成rewrite
break 终止匹配, 不再匹配后面的规则。
redirect 返回302临时重定向 地址栏会显示跳转后的地址。
permanent 返回301永久重定向 地址栏会显示跳转后的地址。
logcation的几个使用实例:
1)location / { }:匹配任何查询,因为所有请求都以 / 开头。但是正则表达式规则将被优先和查询匹配。
2)location =/ {}:仅仅匹配/
3)location ~* \.(gif|jpg|jpeg)$
{
rewrite \.(gif|jpg)$ /logo.png;
}:location不区分大小写,匹配任何以gif,jpg,jpeg结尾的文件。
几个实例:
多目录转成参数
要求:abc.domian.com/sort/2 => abc.domian.com/index.php?act=sort&name=abc&id=2
规则配置:
if ($host ~* (.*)\.domain\.com) {
set $sub_name $1;
rewrite ^/sort\/(\d+)\/?$ /index.php?act=sort&cid=$sub_name&id=$1 last;
}
目录对换
要求:/123456/xxxx -> /xxxx?id=123456
规则配置:
rewrite ^/(\d+)/(.+)/ /$2?id=$1 last;
再来一个针对浏览器优化的自动rewrite,这里rewrite后的目录可以是存在的;
例如设定nginx在用户使用ie的使用重定向到/nginx-ie目录
规则如下:
if ($http_user_agent ~ MSIE) {
rewrite ^(.*)$ /nginx-ie/$1 break;
}
目录自动加“/” ,这个功能一般浏览器自动完成
if (-d $request_filename){
rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;
}
以下这些可能就跟广义的rewrite重写无关了
禁止htaccess
location ~/\.ht {
deny all;
}
禁止多个目录
location ~ ^/(cron|templates)/ {
deny all; break;
}
禁止以/data开头的文件,可以禁止/data/下多级目录下.log.txt等请求
location ~ ^/data {
deny all;
}
禁止单个文件
location ~ /data/sql/data.sql {
deny all;
}
给favicon.ico和robots.txt设置过期时间; 这里为favicon.ico为99天,robots.txt为7天并不记录404错误日志
location ~(favicon.ico) {
log_not_found off;
expires 99d;
break;
}
location ~(robots.txt) {
log_not_found off;
expires 7d;
break;
}
设定某个文件的浏览器缓存过期时间;这里为600秒,并不记录访问日志
location ^~ /html/scripts/loadhead_1.js {
access_log off;
expires 600;
break;
}
Nginx还可以自定义某一类型的文件的保质期时间,具体写法看下文的代码:
location ~* \.(js|css|jpg|jpeg|gif|png|swf)$ {
if (-f $request_filename) {
expires 1h;
break;
}
}
//上段代码就将js|css|jpg|jpeg|gif|png|swf这类文件的保质期设置为一小时。
防盗链的设置:
防盗链:如果你的网站是个下载网站,下载步骤应该是先经过你的主页找到下载地址,才能下载,为了防止某些网友直接访问下载地址完全不通过主页下载,我们就可以使用防盗链的方式,具体代码如下:
location ~* \.(gif|jpg|swf)$ {
valid_referers none blocked start.igrow.cn sta.igrow.cn;
if ($invalid_referer) {
rewrite ^/ http://$host/logo.png;
}
}
文件反盗链并设置过期时间--<盗链多次请求也会打开你的站点的图片啊,所以设置下缓存时间,不会每次盗链都请求并下载这张图片>
location ~* ^.+\.(jpg|jpeg|gif|png|swf|rar|zip|css|js)$ {
valid_referers none blocked *.jjonline.cn *.jjonline.com.cn *.lanwei.org *.jjonline.org localhost 42.121.107.189;
if ($invalid_referer) {
rewrite ^/ http://img.jjonline.cn/forbid.gif;
return 417;
break;
}
access_log off;
break;
}
说明:
这里的return 417 为自定义的http状态码,默认为403,方便通过nginx的log文件找出正确的盗链的请求地址
“rewrite ^/ http://img.jjonline.cn/forbid.gif;”显示一张防盗链图片
“access_log off;”不记录访问日志,减轻压力
“expires 3d”所有文件3天的浏览器缓存
只充许固定ip访问网站,并加上密码;这个对有权限认证的应用比较在行
location \ {
allow 22.27.164.25; #允许的ipd
deny all;
auth_basic “KEY”; #认证的一些设置
auth_basic_user_file htpasswd;
}
说明:location的应用也有各种变化,这里的写法就针对了根目录了。
文件和目录不存在的时重定向
if (!-e $request_filename) {
#proxy_pass http://127.0.0.1; #这里是跳转到代理ip,这个代理ip上有一个监听的web服务器
rewrite ^/ http://www.jjonline.cn/none.html; #跳转到这个网页去
#return 404; #直接返回404码,然后会寻找root指定的404.html文件
}
域名跳转
server {
listen 80;
server_name jump.jjonline.cn ;#需要跳转的多级域名
index index.html index.htm index.php; #入口索引文件的名字
root /var/www/public_html/; #这个站点的根目录
rewrite ^/ http://www.jjonline.cn/;
#rewrite到这个地址,功能表现:在浏览器上输入jump.jjonline.cn并回车,不会有任何提示直接变成www.jjonline.cn
access_log off;
}
多域名转向
server {
listen 80;
server_name www.jjonline.cn www.jjonline.org;
index index.html index.htm index.php;
root /var/www/public_html/;
if ($host ~ “jjonline\.org”) {
rewrite ^(.*) http://www.jjonline.cn$1 permanent;
}
}
三级域名跳转
if ($http_host ~* “^(.*)\.i\.jjonline\.cn$”) {
rewrite ^(.*) http://demo.jjonline.cn$1;
break;
}
域名镜向
server {
listen 80;
server_name mirror.jjonline.cn;
index index.html index.htm index.php;
root /var/www/public_html;
rewrite ^/(.*) http://www.jjonline.cn/$1 last;
access_log off;
}
某个子目录作镜向,这里的示例是demo子目录
location ^~ /demo {
rewrite ^.+ http://demo.jjonline.cn/ last;
break;
}
以下在附带本博客的rewrite写法,emlog系统的rewrite
location ~ {
if (!-e $request_filename) {
rewrite ^/(.+)$ /index.php last;
}
}
相关推荐
Nginx中的rewrite模块是一个非常实用的功能,它允许用户在服务器中动态地重写URL,实现URL的灵活处理,包括URL重定向和内部跳转等操作。rewrite规则在nginx的配置文件中定义,通常在server、location和if指令块中...
- **URL规则**:解析Nginx的rewrite模块,学习如何制定和应用URL重写规则,优化网站URL结构。 5. **HTTPS安全配置** - **SSL/TLS**:介绍SSL/TLS协议,以及如何在Nginx中配置SSL证书,确保网站数据传输的安全性。...
在本文中,我们将深入探讨如何使用Nginx进行URL重写,特别是在ECSHOP商城系统中的实战应用。Nginx作为一个高性能的HTTP和反向代理服务器,它强大的URL管理和重写功能对于优化网站结构、提升用户体验以及搜索引擎优化...
5. URL重写:使用`rewrite`指令进行URL转换,增强网站路由功能。 三、反向代理与负载均衡 1. 反向代理:Nginx作为前端服务器,接收客户端请求并转发到后端服务器,隐藏真实服务器集群的信息。 2. 负载均衡:通过`...
此外,Nginx的强大之处在于其灵活的URL重写规则。通过`rewrite`指令,你可以根据需求修改请求的URL,实现诸如SEO优化、隐藏真实路径等功能。这在动态网站或者API服务中尤其有用。 安全方面,Nginx提供了SSL/TLS支持...
7. Rewrite规则:详细介绍Nginx的rewrite模块,学习如何编写重写规则,实现URL美化、隐藏真实路径等功能。 五、其他高级应用 8. WebSocket支持:讲解Nginx如何支持WebSocket协议,实现长连接通信。 9. 身份验证与...
6. **伪静态规则**:通过rewrite模块,Nginx可以处理以动态形式表示的静态资源请求,如将动态URL重写为友好的SEO格式。 7. **错误页面处理**:通过error_page指令,可以自定义404、500等错误页面,提升用户体验。 ...
- 支持Rewrite重写规则:Nginx能够处理复杂的URL重写,对于搜索引擎优化(SEO)非常重要。 - 内置的健康检查功能:可以动态检测后端服务的健康状况,及时从故障服务中摘除。 - 节省带宽:Nginx支持压缩输出,可以...
HTTP模块涉及了如rewrite(重写规则)、access(访问控制)、limit_conn(连接限制)、proxy(反向代理)等,这些模块是构建复杂Web服务的基础。Stream模块则主要用于TCP和UDP的负载均衡,对于网络服务的优化有着...
此外,Nginx还支持URL重写功能,通过`rewrite`指令,可以实现URL的动态转换,对SEO优化或隐藏实际路径具有积极意义。同时,Nginx提供了丰富的过滤器模块,如gzip压缩、防盗链等,进一步提高性能和安全性。 安全方面...
《第7章 Nginx的Rewrite规则与实例》讲解了Nginx的URL重写功能,这是实现SEO友好的URL和路径重定向的关键。通过学习正则表达式和重写规则,你可以实现动态URL的静态化,以及对旧URL的无缝迁移。 《第11章 Nginx的非...
3. **URL重写**:借助`rewrite`规则进行URL转换,实现动态路由。 4. **SSL/TLS**:配置SSL证书,启用HTTPS,保护数据传输安全。 5. **限速与限流**:使用`limit_rate`和`limit_conn`限制客户端的请求速率和连接数,...
- URL重写规则:通过rewrite指令实现URL的动态转换,优化SEO或实现路径映射。 - 访问控制:基于IP、用户代理、基本认证等方式限制访问权限。 6. **日志管理** - 日志格式定制:自定义Nginx的日志格式,方便进行...
`rewrite`指令允许根据规则进行URL重写,这对于优化SEO和实现动态URL静态化很有帮助。 10. **日志记录** Nginx的日志格式灵活,可以自定义记录内容。默认日志文件通常为`access.log`和`error.log`,通过`log_...
4. URL重写:Nginx支持灵活的URL重写规则,有助于实现SEO优化和复杂的路由配置。 二、Nginx的架构与工作原理 1. 单进程多线程架构:Nginx主要由主进程和工作进程组成,其中主进程负责管理和调度工作进程,工作进程...
- **重写规则**:理解Nginx的rewrite模块,编写URL重写规则,实现URL美化和SEO优化。 5. **SSL/TLS安全** - **HTTPS配置**:配置Nginx支持HTTPS,理解和使用SSL证书,确保网站通信安全。 - **HSTS与OCSP**:了解...
- **支持Rewrite重写规则**:Nginx支持URL重写,这在进行网站迁移或者调整URL结构时非常有用。 - **内置健康检查功能**:Nginx具有内置的健康检查机制,可以自动检测后端服务器的状态并作出相应的调整,提高了系统...
4. **URL重写与路由**:学习使用NGINX的rewrite模块进行URL重定向和规则匹配,优化网站的SEO和用户体验。 5. **SSL/TLS安全配置**:讲解如何为网站启用HTTPS,配置证书,以及设置安全的SSL/TLS参数,保障通信安全。...
**实战Nginx** 在IT行业中,Nginx是一个广泛使用的高性能HTTP和反向代理服务器,也常用于邮件代理服务。本实战指南将深入探讨Nginx的核心功能、配置技巧以及与Java应用的集成,帮助你更好地理解和利用这一强大的...