当前位置:首页 > Nginx > 正文内容

Nginx配置匹配各种案例

5年前 (2019-11-02)Nginx913

1、结合PHP的例子


if (!-d $request_filename) {
    rewrite ^/([a-z-A-Z]+)/([a-z-A-Z]+)/?(.*)$ /index.php?namespace=user&controller=$1&action=$2&$3 last;
    rewrite ^/([a-z-A-Z]+)/?$ /index.php?namespace=user&controller=$1 last;
  break;
}


2、多目录转成参数


abc.***.com/sort/2 => abc.***.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;
}



3、目录对换


/123456/xxxx -> /xxxx?id=123456


rewrite ^/(\d+)/(.+)/ /$2?id=$1 last;


例如下面设定nginx在用户使用ie的使用重定向到/nginx-ie目录下:


if ($http_user_agent ~ MSIE) {
    rewrite ^(.*)$ /nginx-ie/$1 break;
}


4、目录自动加“/”



if (-d $request_filename){
    rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;
}



5、禁止htaccess


location ~/\.ht {
    deny all;
}



6、禁止多个目录


location ~ ^/(cron|templates)/ {
    deny all;
    break;
}



7、禁止以/data开头的文件


可以禁止/data/下多级目录下.log.txt等请求;


location ~ ^/data {
    deny all;
}



8、禁止单个目录

不能禁止.log.txt能请求


location /searchword/cron/ {
    deny all;
}


9、禁止单个文件


location ~ /data/sql/data.sql {
    deny all;
}



10、给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;
}



11、设定某个文件的过期时间;这里为600秒,并不记录访问日志


location ^~ /html/scripts/loadhead_1.js {
    access_log off;
    root /opt/lampp/htdocs/web;
    expires 600;
    break;
}



12、文件反盗链并设置过期时间


这里的return 412 为自定义的http状态码,默认为403,方便找出正确的盗链的请求


“rewrite ^/ http://leech.***.com/leech.gif;”##显示一张防盗链图片
“access_log off;”##不记录访问日志,减轻压力
“expires 3d”##所有文件3天的浏览器缓存


location ~* ^.+\.(jpg|jpeg|gif|png|swf|rar|zip|css|js)$ {
    valid_referers none blocked *.***.com *.***.net localhost 208.97.167.194;
    if ($invalid_referer) {
        rewrite ^/ http://leech.***.com/leech.gif;
        return 412;
        break;
    }
    access_log off;
    root /opt/lampp/htdocs/web;
    expires 3d;
    break;
}



13、只充许固定ip访问网站,并加上密码


root /opt/htdocs/www;
allow 208.97.167.194;
allow 222.33.1.2;
allow 231.152.49.4;
deny all;
auth_basic "C1G_ADMIN";
auth_basic_user_file htpasswd;



14、将多级目录下的文件转成一个文件,增强seo效果


/job-123-456-789.html 指向/job/123/456/789.html


rewrite ^/job-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /job/$1/$2/jobshow_$3.html last;


15、将根目录下某个文件夹指向2级目录

如/shanghaijob/ 指向 /area/shanghai/

如果你将last改成permanent,那么浏览器地址栏显是 /location/shanghai/


rewrite ^/([0-9a-z]+)job$ /$1job/ permanent;
rewrite ^/([0-9a-z]+)job/(.*)$ /area/$1/$2 last;



16、文件和目录不存在的时候重定向:


if (!-e $request_filename) {
    proxy_pass http://127.0.0.1/;
}



17、域名跳转


server {
    listen 80;
    server_name jump.***.com;
    index index.html index.htm index.php;
    root /opt/lampp/htdocs/www;
    rewrite ^/ http://www.***.com/;
    access_log off;
}


18、多域名转向


server_name http://www.***.com/ http://www.***.net/;
index index.html index.htm index.php;
root /opt/lampp/htdocs;

if ($host ~ "***\.net") {
    rewrite ^(.*) http://www.***.com$1/ permanent;
}



19、三级域名跳转


if ($http_host ~* "^(.*)\.i\.***\.com$") {    
    rewrite ^(.*) http://top.***.com$1/;
    break;
}



20、域名镜向


server
{
    listen 80;
    server_name mirror.***.com;
    index index.html index.htm index.php;
    root /opt/lampp/htdocs/www;
    rewrite ^/(.*) http://www.***.com/$1 last;
    access_log off;
}



21、某个子目录作镜向


location ^~ /zhaopinhui {
    rewrite ^.+ http://zph.***.com/ last;
    break;
}


“Nginx配置匹配各种案例” 的相关文章

Nginx的编译安装

Nginx快速安装Mainline version 开发版Stable version 稳定版Legacy version 历史版本基础环境准备:#确认系统网络 [root@qmf ~]# ping baidu.com #确认yum可用 [root@qmf&n...

LNMP架构搭建动态网站

1.搭建LNMP架构yum安装 nginx php7.2 Mriadb5.71.安装Nginx#1.使用Nginx官方提供的rpm包 [root@nginx ~]# cat /etc/yum.repos.d/nginx.repo  [nginx] nam...

PHP编译安装

PHP5.6编译安装配置yum源并安装依赖wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo yum install zlib-devel&...

Nginx匹配规则和优先级

1.Server优先级Nginx多个相同Server_name优先级1.1、环境准备[root@nginx ~]# mkdir /soft/code{1..3} -p [root@nginx ~]# for i i...

Nginx实现七层负载均衡

Nginx实现七层负载均衡

Nginx负载均衡当我们的Web服务器直接面向用户,往往要承载大量并发请求,单台服务器难以负荷,使用多台Web服务器组成集群,前端使用Nginx负载均衡,将请求分散的打到后端服务器集群中,实现负载的分发。那么会大大提升系统的吞吐率、请求性能、高容灾所以说当海量用户请求过来以后,它同样是请求调度节点,...

Nginx实现四层负载均衡

Nginx实现四层负载均衡

Nginx四层负载均衡四层负载均衡是基于传输层协议包来封装的(如:TCP/IP),七层是指的应用层,他的组装在四层的基础之上,无论四层还是七层都是指的OSI网络模型。四层负载均衡应用场景1、四层+七层来做负载均衡,四层可以保证七层的负载均衡的高可用性;如:nginx就无法保证自己的服务高可用,需要依...