当前位置 主页 > 服务器问题 > nginx问题汇总 >

    Nginx下301重定向域名的方法小结(3)

    栏目:nginx问题汇总 时间:2018-09-14 16:18


    * redirect 返回302临时重定向 地址栏会显示跳转后的地址
    * permanent 返回301永久重定向 地址栏会显示跳转后的地址
    一些可用的全局变量有,可以用做条件判断(待补全)

    $args
    $content_length
    $content_type
    $document_root
    $document_uri
    $host
    $http_user_agent
    $http_cookie
    $limit_rate
    $request_body_file
    $request_method
    $remote_addr
    $remote_port
    $remote_user
    $request_filename
    $request_uri
    $query_string
    $scheme
    $server_protocol
    $server_addr
    $server_name
    $server_port
    $uri
    结合QeePHP的例子

    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;
    多目录转成参数
    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;
    例如下面设定nginx在用户使用ie的使用重定向到/nginx-ie目录下:

    if ($http_user_agent ~ MSIE) {
    rewrite ^(.*)$ /nginx-ie/$1 break;
    }
    目录自动加“/”

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

    location ~/\.ht {
    deny all;
    }
    禁止多个目录

    location ~ ^/(cron|templates)/ {
    deny all;
    break;
    }
    禁止以/data开头的文件
    可以禁止/data/下多级目录下.log.txt等请求;

    location ~ ^/data {
    deny all;
    }
    禁止单个目录
    不能禁止.log.txt能请求

    location /searchword/cron/ {
    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;
    root /opt/lampp/htdocs/web;
    expires 600;
    break;
    }
    文件反盗链并设置过期时间
    这里的return 412 为自定义的http状态码,默认为403,方便找出正确的盗链的请求
    “rewrite ^/ /2018img/2018/09/10154253.gif;”显示一张防盗链图片
    “access_log off;”不记录访问日志,减轻压力
    “expires 3d”所有文件3天的浏览器缓存

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