以ISO-8601 Nginx格式获取当前时间

以ISO-8601 Nginx格式获取当前时间,nginx,Nginx,有没有办法在nginx中以ISO-8601格式获取当前时间 我想在标题中添加时间。 提前感谢在nginx中,您只需使用变量$time\u iso8601即可访问当前时间 如果您想要将该日期(iso8601格式)格式化为任何所需格式的日期时间,您可以通过map方法将regex与nginx http模块一起使用 请参阅此以了解更多有关 注意:只能在http模块内映射 这里我分享一个nginx.conf示例代码,以供参考和更好地理解 user www-data; worker_processes au

有没有办法在nginx中以ISO-8601格式获取当前时间 我想在标题中添加时间。
提前感谢

在nginx中,您只需使用变量$time\u iso8601即可访问当前时间

如果您想要将该日期(iso8601格式)格式化为任何所需格式的日期时间,您可以通过map方法将regex与nginx http模块一起使用

请参阅此以了解更多有关 注意:只能在http模块内映射

这里我分享一个nginx.conf示例代码,以供参考和更好地理解

user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

    events {
        worker_connections 768;
        # multi_accept on;
    }

    http {
    ##
    # Basic Settings
    ##

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    # server_tokens off;

    # server_names_hash_bucket_size 64;
    # server_name_in_redirect off;

    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    ##
    # SSL Settings
    ##

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE
    ssl_prefer_server_ciphers on;

    ##
    # Logging Settings

    map $time_iso8601 $year {
        default             'year';
        '~^(?<yyyy>\d{4})-'     $yyyy;
    }
    map $time_iso8601 $month {
        default             'month';
        '~^\d{4}-(?<mm>\d{2})-'     $mm;
    }
    map $time_iso8601 $day {
        default             'day';
        '~^\d{4}-\d{2}-(?<dd>\d{2})'    $dd;
    }
    map $time_iso8601 $hour {
            default             'hour';
            '~^\d{4}-\d{2}-\d{2}T(?<hh>\d{2})'    $hh;
        }
    map $time_iso8601 $min {
            default             'minute';
            '~^\d{4}-\d{2}-\d{2}T\d{2}:(?<mn>\d{2})'    $mn;
        }

    map $time_iso8601 $formatted_date {
        default                         'date-not-found';
        '~^(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})'    $year-$month-$day;
    }


    access_log /var/log/nginx/access.$formatted_date,$hour:$min.log;
    error_log /var/log/nginx/error.log;


    ##
    # Gzip Settings
    ##

    gzip on;

    # gzip_vary on;
    # gzip_proxied any;
    # gzip_comp_level 6;
    # gzip_buffers 16 8k;
    # gzip_http_version 1.1;
    # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

    ##
    # Virtual Host Configs
    ##

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;}
它将只使用日期作为日志文件名,您也可以根据需要自定义它


如果您想在xyz.com这样的子配置文件中使用它,您需要从nginx.conf中删除http模块,即http{},并在xyz.com配置文件中以相同的方式更新它,否则它将被嵌套为http(http{}),这可能会导致问题。

在nginx中,您只需使用变量$time_iso8601即可访问当前时间

如果您想要将该日期(iso8601格式)格式化为任何所需格式的日期时间,您可以通过map方法将regex与nginx http模块一起使用

请参阅此以了解更多有关 注意:只能在http模块内映射

这里我分享一个nginx.conf示例代码,以供参考和更好地理解

user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

    events {
        worker_connections 768;
        # multi_accept on;
    }

    http {
    ##
    # Basic Settings
    ##

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    # server_tokens off;

    # server_names_hash_bucket_size 64;
    # server_name_in_redirect off;

    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    ##
    # SSL Settings
    ##

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE
    ssl_prefer_server_ciphers on;

    ##
    # Logging Settings

    map $time_iso8601 $year {
        default             'year';
        '~^(?<yyyy>\d{4})-'     $yyyy;
    }
    map $time_iso8601 $month {
        default             'month';
        '~^\d{4}-(?<mm>\d{2})-'     $mm;
    }
    map $time_iso8601 $day {
        default             'day';
        '~^\d{4}-\d{2}-(?<dd>\d{2})'    $dd;
    }
    map $time_iso8601 $hour {
            default             'hour';
            '~^\d{4}-\d{2}-\d{2}T(?<hh>\d{2})'    $hh;
        }
    map $time_iso8601 $min {
            default             'minute';
            '~^\d{4}-\d{2}-\d{2}T\d{2}:(?<mn>\d{2})'    $mn;
        }

    map $time_iso8601 $formatted_date {
        default                         'date-not-found';
        '~^(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})'    $year-$month-$day;
    }


    access_log /var/log/nginx/access.$formatted_date,$hour:$min.log;
    error_log /var/log/nginx/error.log;


    ##
    # Gzip Settings
    ##

    gzip on;

    # gzip_vary on;
    # gzip_proxied any;
    # gzip_comp_level 6;
    # gzip_buffers 16 8k;
    # gzip_http_version 1.1;
    # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

    ##
    # Virtual Host Configs
    ##

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;}
它将只使用日期作为日志文件名,您也可以根据需要自定义它


如果您想在xyz.com这样的子配置文件中使用它,您需要从nginx.conf中删除http模块,即http{},并在xyz.com配置文件中以相同的方式进行更新,否则它将被嵌套为http(http{}),这可能会导致问题。

我们可以将此日期格式化为yyyyMMDD吗?我们可以将此日期格式化为yyyyMMDD吗?
access_log /var/log/nginx/access.$formatted_date.log;