配置 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; } } }
相关推荐
3. **配置Nginx日志**: 默认情况下,Nginx已经配置了日志记录,但为了确保服务正常运行,我们需要在`http{}`块中添加或确认以下日志配置: ```nginx log_format main '$remote_addr - $remote_user [$time_local...
Nginx日志分析工具2.1.0是一款专为Windows平台设计的软件,用于高效地解析、统计和分析Nginx服务器产生的日志文件。Nginx作为一款高性能的Web服务器和反向代理服务器,广泛应用于各类网站和应用程序中。在日常运维...
Nginx日志描述 通过访问日志,你可以得到用户地域来源、跳转来源、使用终端、某个URL访问量等相关信息;通过错误日志,你可以得到系统某个服务或server的性能瓶颈等。因此,将日志好好利用,你可以得到很多有价值的...
在我们的案例中,Grafana将与Loki集成,通过图形化界面展示Nginx日志,使我们能够实时监控和分析服务器状态。 Docker Compose是Docker的一个工具,允许我们定义和运行多容器的Docker应用程序。在提供的`docker-...
: 为限制 Nginx日志文件大小增加,文件过大,导致无法收缩日志,在配置好的nginx的安装目录下,可以采用批处理文件对日志,根据实际需要的时间进行自动切割,本脚本以天为单位进行保存。对于日志备份功能,因存储...
【syslog实现远程nginx日志服务】 syslog和Nginx是两个在IT行业中至关重要的组件。syslog是一种网络协议,用于系统日志记录和管理,而Nginx则是一款高性能的HTTP和反向代理服务器,广泛应用于网站的负载均衡和静态...
三、配置Nginx日志切割 1. **设置日志文件路径** 在Nginx配置文件(通常是`/etc/nginx/nginx.conf`或`/usr/local/nginx/conf/nginx.conf`)中,指定日志文件的路径,例如: ``` access_log /var/log/nginx/...
在 Nginx 配置中,我们可以通过修改 `nginx.conf` 文件来定制日志格式,使其符合 JSON 格式,以便 Filebeat 更好地解析。如文中所示,创建一个名为 `json` 的日志格式,包含时间戳、远程地址、用户、发送的字节数、...
Nginx日志主要分为两种:访问日志和错误日志。日志开关在Nginx配置文件(/etc/nginx/nginx.conf)中设置,两种日志都可以选择性关闭,默认都是打开的。 访问日志主要记录客户端访问Nginx的每一个请求,格式可以...
### Nginx 配置详解:负载均衡、动静分离、请求日志打印、日志切割与管理 #### 一、Nginx配置负载均衡 **负载均衡**是Nginx的一项核心功能,它能帮助我们将客户端请求分发到不同的服务器上,从而提高系统的稳定性...
可一键配置nginx日志生成格式,并进行图形化解析,充分了解访客数据与后台服务运行状况。 docker容器部署 将nginx与nginxWebUI集成到一个docker镜像中,完美的打造一个拥有图形界面的nginx运行包,不与服务器上...
Linux 系统 Nginx 日志解决方案 本文将详细介绍如何使用 Nginx、Promtail、Loki 和 Grafana 实现一个简单的 Nginx 日志展示解决方案。该解决方案旨在满足客户的需求,查看网站的访问情况,并且不依赖于 Google 或...
本资源结合我的博客一并使用,用于解决filebeat收集nginx日志用的
### Nginx 日志记录 POST 请求的内容和 Cookies 在 Web 开发与运维中,Nginx 是一个非常流行的 HTTP 和反向代理服务器。对于开发者来说,掌握如何利用 Nginx 来记录用户发送的 POST 请求内容及 Cookies 信息至关...
### Windows 下配置 Nginx 反向代理 Tomcat 在 Windows 环境下配置 Nginx 作为 Tomcat 的反向代理服务器是一项常见的任务,主要用于实现负载均衡、提高安全性及提升性能等目的。本文将从下载 Nginx 开始,详细介绍...
Nginx 配置文件 nginx.conf 详解 Nginx 配置文件 nginx.conf 是 Nginx 服务器的核心配置文件,它控制着 Nginx 服务器的行为和性能。在这个配置文件中,我们可以设置服务器的用户和组、工作进程数、错误日志、进程...
在本文中,我们将深入探讨如何在Windows环境下安装Nginx 1.14.0,并配置一个自动清理日志的任务程序。Nginx是一个高性能的Web服务器和反向代理服务器,广泛应用于各种Web服务场景。在Windows上安装Nginx可以让用户在...
在这个主题中,我们主要关注如何在CentOS 8操作系统上安装Nginx 1.20.1版本以及配置Nginx以支持HTTPS服务。以下是详细的步骤和相关知识点: 首先,我们需要确保CentOS 8系统已经更新到最新状态,通过运行以下命令:...
- 配置Nginx日志,以便于监控和分析服务器性能。 四、安全配置 - 使用防火墙(如`firewalld`或`iptables`)开启必要的端口,例如80、443、8080等。 - 避免使用默认的端口号,以减少被攻击的风险。 - 对Nginx和...