`
liyonghui160com
  • 浏览: 775585 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多

 

配置 Nginx

先来看一个实际的配置文件:

 

user  root;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr|||$remote_user|||$time_local|||$request_uri'   
                      '|||$status|||$body_bytes_sent|||$http_referer'   
                      '|||$http_user_agent|||$http_x_forwarded_for';   
  
    access_log  off;   
    #access_log  logs/access.log;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       81;
        server_name  localhost;

        #charset koi8-r;
 
        access_log  /usr/local/nginx/nginxlog/access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}

 

 

nginx 日志相关指令主要有两条,
log_format,用来设置日志格式,
access_log,用来指定日志文件的存放路径、格式和缓存大小

1、log_format 格式

    log_format       name( 格式名字)  格式样式(即想要得到什么样的日志内容)


默认的示例:
  log_format     main               '$remote_addr - $remote_user [$time_local] "$request" '
                                              '$status $body_bytes_s ent "$http_referer" '
                                              '"$http_user_agent" "$http_x_forwarded_for"'
注释:
$remote_addr   与$http_x_forwarded_for 用以记录客户端的ip地址;
$remote_user   :用来记录客户端用户名称;
$time_local  : 用来记录访问时间与时区; 
$request  :  用来记录请求的url与http协议;

$request_uri: /stat.php?id=1585378&web_id=1585378
$uri /stat.php
$document_uri: /stat.php
$status     :  用来记录请求状态;成功是200,
$body_bytes_s ent  :记录发送给客户端文件主体内容大小;
$http_referer  :用来记录从那个页面链接访问过来的;
$http_user_agent  :记录客户毒啊浏览器的相关信息;


通常web服务器放在反向代理的后面,这样就不能获取到客户的IP地址了,通过$remote_add拿到的IP地址是反向代理服务器的iP地址。反向代理服务器在转发请求的http头信息中,可以增加x_forwarded_for信息,用以记录原有客户端的IP地址和原来客户端的请求的服务器地址;

    log_format     mylogformat     ' $http_x_forwarded_for- $remote_user [$time_local] '
                                                  ' "$request"   '$status $body_bytes_s ent '
                                                  ' "$http_referer" "$http_user_agent" ';


2、用access_log指令日志文件存放路径;
用了log_format 指令设置了日志格式之后,需要用access_log指令指定日志文件的存放路径;
access_log        path(存放路径)                   format (自定义日志名称)
示例:
#access_log             logs/access.log              main;
我们用log_format 定义了一个mylogformat的日志 我们可以写成这样
access_log             logs/access.log         mylogformat ;


如果不想启用日志 :
access_log off ;


在定义日志目录中要注意的是,

        1、nginx进程设置的用户和组必须有对该路径 创建文件的权限,假设nginx的usr指令设置的用户名 和用户组都是www,而logs 目录的用户名和组是root,那么日志文件将无法被创建;

 

        2、一般情况下,如果nginx.conf配置文件里的http里面没设置access_log off;默认是会把所有访问日志输出到/var/log/nginx目录下面,现在要把不同网站的日志区分开来,所以添加了access_log off。

        按照之前很多网上的配置方法是在各个虚拟主机配置文件的server段里添加日志格式和日志输出路径,如下

 

log_format access '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" $http_x_forwarded_for';
access_log  /home/wwwlogs/ddhow.com.log access;
error_log  /home/wwwlogs/ddhow.com-error.log;

 

lua记录日志:

user  root;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;
    log_format tick "$msec|||$u_t|||$remote_addr|||$u_domain|||$u_url|||$u_title|||$u_referrer|||$u_sh|||$u_sw|||$u_cd|||$u_lang|||$http_user_agent|||$u_utrace|||$u_account|||$u_time";
    

    #access_log  logs/access.log  main;
    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

	location /1.gif {
    	#伪装成gif文件
    	default_type image/gif;
    	#本身关闭access_log,通过subrequest记录log
    	access_log off;
    	access_by_lua "
    	-- 用户跟踪cookie名为__utrace
    	local uid = ngx.var.cookie___utrace
    	if not uid then
    	-- 如果没有则生成一个跟踪cookie,算法为md5(时间戳+IP+客户端信息)
    	uid = ngx.md5(ngx.now() .. ngx.var.remote_addr .. ngx.var.http_user_agent)
    	end
    	ngx.header['Set-Cookie'] = {'__utrace=' .. uid .. '; path=/'}
    	if ngx.var.arg_domain then
    	-- 通过subrequest到/i-log记录日志,将参数和用户跟踪cookie带过去
    	ngx.location.capture('/i-log?' .. ngx.var.args .. '&utrace=' .. uid .. '&time=' .. ngx.localtime())
    	end
    	";
    	#此请求不缓存
    	add_header Expires "Fri, 01 Jan 1980 00:00:00 GMT";
    	add_header Pragma "no-cache";
    	add_header Cache-Control "no-cache, max-age=0, must-revalidate";
    	#返回一个1×1的空gif图片
    	empty_gif;
    	}
    	location /i-log {
    	#内部location,不允许外部直接访问
    	internal;
   	 #设置变量,注意需要unescape
    	set_unescape_uri $u_domain $arg_domain;
	set_unescape_uri $u_t $arg_t;
    	set_unescape_uri $u_url $arg_url;
    	set_unescape_uri $u_title $arg_title;
    	set_unescape_uri $u_referrer $arg_referrer;
    	set_unescape_uri $u_sh $arg_sh;
    	set_unescape_uri $u_sw $arg_sw;
    	set_unescape_uri $u_cd $arg_cd;
    	set_unescape_uri $u_lang $arg_lang;
    	set_unescape_uri $u_utrace $arg_utrace;
    	set_unescape_uri $u_account $arg_account;
	set_unescape_uri $u_time $arg_time;
    	#打开日志
    	log_subrequest on;
    	#记录日志到ma.log,实际应用中最好加buffer,格式为tick
    	access_log /usr/local/nginx/nginxlog/access.log tick;
    	#输出空字符串
    	echo '';
    	}

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
	
	# remove the robots line if you want to use wordpress' virtual robots.txt
       	location = /robots.txt  { access_log off; log_not_found off; }
        location = /favicon.ico { access_log off; log_not_found off; }
        # this prevents hidden files (beginning with a period) from being served
        location ~ /\.          { access_log off; log_not_found off; deny all; }

    }



}

 

分享到:
评论

相关推荐

    Web应用安全:Nginx日志配置实验.doc

    3. **配置Nginx日志**: 默认情况下,Nginx已经配置了日志记录,但为了确保服务正常运行,我们需要在`http{}`块中添加或确认以下日志配置: ```nginx log_format main '$remote_addr - $remote_user [$time_local...

    Nginx日志分析工具2.1.0.zip

    Nginx日志分析工具2.1.0是一款专为Windows平台设计的软件,用于高效地解析、统计和分析Nginx服务器产生的日志文件。Nginx作为一款高性能的Web服务器和反向代理服务器,广泛应用于各类网站和应用程序中。在日常运维...

    Nginx日志管理介绍

    Nginx日志描述 通过访问日志,你可以得到用户地域来源、跳转来源、使用终端、某个URL访问量等相关信息;通过错误日志,你可以得到系统某个服务或server的性能瓶颈等。因此,将日志好好利用,你可以得到很多有价值的...

    基于loki+grafana的在线nginx日志分析系统

    在我们的案例中,Grafana将与Loki集成,通过图形化界面展示Nginx日志,使我们能够实时监控和分析服务器状态。 Docker Compose是Docker的一个工具,允许我们定义和运行多容器的Docker应用程序。在提供的`docker-...

    Windows系统nginx日志分割批处理脚本

    : 为限制 Nginx日志文件大小增加,文件过大,导致无法收缩日志,在配置好的nginx的安装目录下,可以采用批处理文件对日志,根据实际需要的时间进行自动切割,本脚本以天为单位进行保存。对于日志备份功能,因存储...

    syslog实现远程nginx日志服务

    【syslog实现远程nginx日志服务】 syslog和Nginx是两个在IT行业中至关重要的组件。syslog是一种网络协议,用于系统日志记录和管理,而Nginx则是一款高性能的HTTP和反向代理服务器,广泛应用于网站的负载均衡和静态...

    nginx日志切割.rar

    三、配置Nginx日志切割 1. **设置日志文件路径** 在Nginx配置文件(通常是`/etc/nginx/nginx.conf`或`/usr/local/nginx/conf/nginx.conf`)中,指定日志文件的路径,例如: ``` access_log /var/log/nginx/...

    Filebeat 实时收集 Nginx 日志1

    在 Nginx 配置中,我们可以通过修改 `nginx.conf` 文件来定制日志格式,使其符合 JSON 格式,以便 Filebeat 更好地解析。如文中所示,创建一个名为 `json` 的日志格式,包含时间戳、远程地址、用户、发送的字节数、...

    Nginx自定义访问日志的配置方式

    Nginx日志主要分为两种:访问日志和错误日志。日志开关在Nginx配置文件(/etc/nginx/nginx.conf)中设置,两种日志都可以选择性关闭,默认都是打开的。 访问日志主要记录客户端访问Nginx的每一个请求,格式可以...

    Nginx配置负载均衡、动静分离、请求日志打印、日志切割、压缩、删除.md

    ### Nginx 配置详解:负载均衡、动静分离、请求日志打印、日志切割与管理 #### 一、Nginx配置负载均衡 **负载均衡**是Nginx的一项核心功能,它能帮助我们将客户端请求分发到不同的服务器上,从而提高系统的稳定性...

    nginx网页配置工具nginxWebUI是一款可以使用网页来快速配置与管理nginx集群的nginx辅助工具.rar

    可一键配置nginx日志生成格式,并进行图形化解析,充分了解访客数据与后台服务运行状况。 docker容器部署 将nginx与nginxWebUI集成到一个docker镜像中,完美的打造一个拥有图形界面的nginx运行包,不与服务器上...

    Linux系统Nginx日志解决方案.docx

    Linux 系统 Nginx 日志解决方案 本文将详细介绍如何使用 Nginx、Promtail、Loki 和 Grafana 实现一个简单的 Nginx 日志展示解决方案。该解决方案旨在满足客户的需求,查看网站的访问情况,并且不依赖于 Google 或...

    filebeat收集nginx日志的配置文件

    本资源结合我的博客一并使用,用于解决filebeat收集nginx日志用的

    nginx日志记录post请求的内容和cookies

    ### Nginx 日志记录 POST 请求的内容和 Cookies 在 Web 开发与运维中,Nginx 是一个非常流行的 HTTP 和反向代理服务器。对于开发者来说,掌握如何利用 Nginx 来记录用户发送的 POST 请求内容及 Cookies 信息至关...

    windows下配置nginx反向代理tomcat

    ### Windows 下配置 Nginx 反向代理 Tomcat 在 Windows 环境下配置 Nginx 作为 Tomcat 的反向代理服务器是一项常见的任务,主要用于实现负载均衡、提高安全性及提升性能等目的。本文将从下载 Nginx 开始,详细介绍...

    Nginx 配置文件 nginx.conf 详解

    Nginx 配置文件 nginx.conf 详解 Nginx 配置文件 nginx.conf 是 Nginx 服务器的核心配置文件,它控制着 Nginx 服务器的行为和性能。在这个配置文件中,我们可以设置服务器的用户和组、工作进程数、错误日志、进程...

    windows安装nginx-1.14.0,附带有清理日志任务程序XML文件

    在本文中,我们将深入探讨如何在Windows环境下安装Nginx 1.14.0,并配置一个自动清理日志的任务程序。Nginx是一个高性能的Web服务器和反向代理服务器,广泛应用于各种Web服务场景。在Windows上安装Nginx可以让用户在...

    centos8 nginx1.20.1 与nginx配置文件

    在这个主题中,我们主要关注如何在CentOS 8操作系统上安装Nginx 1.20.1版本以及配置Nginx以支持HTTPS服务。以下是详细的步骤和相关知识点: 首先,我们需要确保CentOS 8系统已经更新到最新状态,通过运行以下命令:...

    CentOS7 环境下Tomcat和Nginx 安全配置操作手册

    - 配置Nginx日志,以便于监控和分析服务器性能。 四、安全配置 - 使用防火墙(如`firewalld`或`iptables`)开启必要的端口,例如80、443、8080等。 - 避免使用默认的端口号,以减少被攻击的风险。 - 对Nginx和...

Global site tag (gtag.js) - Google Analytics