nginx 日志格式设置 和 负载均衡下 获取真实ip

时间:2025-02-15 15:53:30

log_format log 格式   '配置规则';

日志格式设置:

$remote_addr与$http_x_forwarded_for用以记录客户端的ip地址;

$remote_user:用来记录客户端用户名称;

$time_local: 用来记录访问时间与时区;

$request: 用来记录请求的url与http协议;

$status: 用来记录请求状态;成功是200,

$body_bytes_sent :记录发送给客户端文件主体内容大小;

$http_referer:用来记录从那个页面链接访问过来的;

$http_user_agent:记录客户浏览器的相关信息

$remote_user:用来记录客户端用户名称;

$time_local: 用来记录访问时间与时区;

$request: 用来记录请求的url与http协议;

$status: 用来记录请求状态;成功是200,

$body_bytes_sent :记录发送给客户端文件主体内容大小;

$http_referer:用来记录从那个页面链接访问过来的;

$http_user_agent:记录客户浏览器的相关信息
 

 

====================================================

没配置之前的日志格式

192.168.0.202 - - [16/Oct/2018:17:06:48 +0800] "GET / HTTP/1.0" 200 13 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36"
192.168.0.202 - - [16/Oct/2018:17:06:49 +0800] "GET / HTTP/1.0" 200 13 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36"
192.168.0.202 - - [16/Oct/2018:17:06:49 +0800] "GET / HTTP/1.0" 200 13 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36"
192.168.0.202 - - [16/Oct/2018:17:06:49 +0800] "GET / HTTP/1.0" 200 13 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36"
 

 

日志格式如下

http里

log_format  my_format  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

server里  需要指定 定义的日志

access_log  /home/wwwlogs/ my_format;
 

 

配置后 

 

69.0.3497.100 Safari/537.36"
192.168.0.202 - - [16/Oct/2018:17:06:49 +0800] "GET / HTTP/1.0" 200 13 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36"
192.168.0.202 - - [16/Oct/2018:17:06:49 +0800] "GET / HTTP/1.0" 200 13 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36"
192.168.0.202 - - [16/Oct/2018:17:06:49 +0800] "GET / HTTP/1.0" 200 13 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36"
192.168.0.202 - - [16/Oct/2018:17:09:21 +0800] "GET / HTTP/1.0" 200 13 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36" "192.168.0.200"
192.168.0.202 - - [16/Oct/2018:17:09:22 +0800] "GET / HTTP/1.0" 200 13 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36" "192.168.0.200"
192.168.0.202 - - [16/Oct/2018:17:09:36 +0800] "GET / HTTP/1.0" 200 13 "-" "curl/7.29.0" "192.168.0.204"
192.168.0.202 - - [16/Oct/2018:17:17:27 +0800] "GET / HTTP/1.0" 200 13 "-" "curl/7.29.0" "192.168.0.204"
192.168.0.202 - - [16/Oct/2018:17:18:18 +0800] "GET / HTTP/1.0" 200 13 "-" "curl/7.29.0" "192.168.0.203"
192.168.0.202 - - [16/Oct/2018:17:19:43 +0800] "GET / HTTP/1.0" 200 13 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36" "192.168.0.200"
192.168.0.202 - - [16/Oct/2018:17:20:02 +0800] "GET / HTTP/1.0" 200 13 "-" "curl/7.29.0" "192.168.0.204"

 

完整的如下 如下

[root@localhost wwwlogs]# vim /usr/local/nginx/conf/

user  www www;

worker_processes auto;

error_log  /home/wwwlogs/nginx_error.log  crit;

pid        /usr/local/nginx/logs/;

#Specifies the value for maximum file descriptors that can be opened by this process.
worker_rlimit_nofile 51200;

events
    {
        use epoll;
        worker_connections 51200;
        multi_accept on;
    }

http
    {
        include       ;
        default_type  application/octet-stream;


log_format  my_format  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

        server_names_hash_bucket_size 128;
        client_header_buffer_size 32k;
        large_client_header_buffers 4 32k;
        client_max_body_size 50m;

        sendfile   on;
        tcp_nopush on;

        keepalive_timeout 60;

        tcp_nodelay on;

        fastcgi_connect_timeout 300;
        fastcgi_send_timeout 300;
        fastcgi_read_timeout 300;
        fastcgi_buffer_size 64k;
        fastcgi_buffers 4 64k;
        fastcgi_busy_buffers_size 128k;
        fastcgi_temp_file_write_size 256k;

        gzip on;
        gzip_min_length  1k;
        gzip_buffers     4 16k;
        gzip_http_version 1.1;
        gzip_comp_level 2;
        gzip_types     text/plain application/javascript application/x-javascript text/javascript text/css application/xml application/xml+rss;
        gzip_vary on;
        gzip_proxied   expired no-cache no-store private auth;
        gzip_disable   "MSIE [1-6]\.";

        #limit_conn_zone $binary_remote_addr zone=perip:10m;
        ##If enable limit_conn_zone,add "limit_conn perip 10;" to server section.

        server_tokens off;
        access_log off;


server
    {
        listen 80 default_server;
        #listen [::]:80 default_server ipv6only=on;
        server_name _;
        index   ;
        root  /home/wwwroot/default;

        #error_page   404   /;

        # Deny access to PHP files in specific directory
        #location ~ /(wp-content|uploads|wp-includes|images)/.*\.php$ { deny all; }

        include ;

        location /nginx_status
        {
            stub_status on;
            access_log   off;
        }

        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
        {
            expires      30d;
        }

        location ~ .*\.(js|css)?$
        {
            expires      12h;
        }

        location ~ /.well-known {
            allow all;
        }

        location ~ /\.
        {
            deny all;
        }

        access_log  /home/wwwlogs/ my_format;
    }
include vhost/*.conf;
}

ngixn 负载均衡 获取真实ip 并修改日志格式  负载到的服务器 nginx格式如上配置   调度的或者路由的服务器nginx 配置如下

 
核心的如下

        location /{

                proxy_pass http://web1;
                proxy_set_header    Host             $host;#保留代理之前的host
               # proxy_set_header    X-Forwarded-For  $remote_addr;
                proxy_set_header    X-Real-IP        $remote_addr;#保留代理之前的真实客户端ip
                proxy_set_header    X-Forwarded-For  $proxy_add_x_forwarded_for;
               # proxy_set_header    HTTP_X_FORWARDED_FOR $remote_addr;#在多级代理的情况下,记录每次代理之前的客户端真实ip


        }
完整配置如下

user  www www;

worker_processes auto;

error_log  /home/wwwlogs/nginx_error.log  crit;

pid        /usr/local/nginx/logs/;

#Specifies the value for maximum file descriptors that can be opened by this process.
worker_rlimit_nofile 51200;

events
    {
        use epoll;
        worker_connections 51200;
        multi_accept on;
    }

http
    {
        include       ;
        default_type  application/octet-stream;


        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for" 1111111111';


        server_names_hash_bucket_size 128;
        client_header_buffer_size 32k;
        large_client_header_buffers 4 32k;
        client_max_body_size 50m;

        sendfile   on;
        tcp_nopush on;

        keepalive_timeout 60;

        tcp_nodelay on;

        fastcgi_connect_timeout 300;
        fastcgi_send_timeout 300;
        fastcgi_read_timeout 300;
        fastcgi_buffer_size 64k;
        fastcgi_buffers 4 64k;
        fastcgi_busy_buffers_size 128k;
        fastcgi_temp_file_write_size 256k;

        gzip on;
        gzip_min_length  1k;
        gzip_buffers     4 16k;
        gzip_http_version 1.1;
        gzip_comp_level 2;
        gzip_types     text/plain application/javascript application/x-javascript text/javascript text/css application/xml application/xml+rss;
        gzip_vary on;
        gzip_proxied   expired no-cache no-store private auth;
        gzip_disable   "MSIE [1-6]\.";

        #limit_conn_zone $binary_remote_addr zone=perip:10m;
        ##If enable limit_conn_zone,add "limit_conn perip 10;" to server section.

        server_tokens off;
        access_log off;


        upstream web1{

                server 192.168.0.203;
                server 192.168.0.204;

        }





server
    {
        listen 80;
        #listen [::]:80 default_server ipv6only=on;
        server_name ;
        index   ;
        root  /home/wwwroot/default;


        location /{

                proxy_pass http://web1;
                proxy_set_header    Host             $host;#保留代理之前的host
                proxy_set_header    X-Forwarded-For  $remote_addr;
               # proxy_set_header    X-Real-IP        $remote_addr;#保留代理之前的真实客户端ip
               # proxy_set_header    X-Forwarded-For  $proxy_add_x_forwarded_for;
               # proxy_set_header    HTTP_X_FORWARDED_FOR $remote_addr;#在多级代理的情况下,记录每次代理之前的客户端真实ip


        }

        #error_page   404   /;

        # Deny access to PHP files in specific directory
        #location ~ /(wp-content|uploads|wp-includes|images)/.*\.php$ { deny all; }

        include ;

        location /nginx_status
        {
            stub_status on;
            access_log   off;
        }

        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
        {
            expires      30d;
        }

        location ~ .*\.(js|css)?$
        {
            expires      12h;
        }

        location ~ /.well-known {
            allow all;
        }

        location ~ /\.
        {
            deny all;
        }

        access_log  /home/wwwlogs/;
    }
        include vhost/*.conf;
}