配置 Nginx
先来看一个实际的配置文件:
user nobody;# 工作进程的属主 worker_processes 4;# 工作进程数,一般与 CPU 核数等同 #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { use epoll;#Linux 下性能最好的 event 模式 worker_connections 2048;# 每个工作进程允许最大的同时连接数 } http { include mime.types; 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"'; #access_log off; access_log logs/access.log;# 日志文件名 sendfile on; #tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; include gzip.conf; # 集群中的所有后台服务器的配置信息 upstream tomcats { server 192.168.0.11:8080 weight=10; server 192.168.0.11:8081 weight=10; server 192.168.0.12:8080 weight=10; server 192.168.0.12:8081 weight=10; server 192.168.0.13:8080 weight=10; server 192.168.0.13:8081 weight=10; } server { listen 80;#HTTP 的端口 server_name localhost; charset utf-8; #access_log logs/host.access.log main; location ~ ^/NginxStatus/ { stub_status on; #Nginx 状态监控配置 access_log off; } location ~ ^/(WEB-INF)/ { deny all; } location ~ .(htm|html|asp|php|gif|jpg|jpeg|png|bmp|ico|rar|css|js| zip|java|jar|txt|flv|swf|mid|doc|ppt|xls|pdf|txt|mp3|wma)$ { root /opt/webapp; expires 24h; } location / { proxy_pass http://tomcats;# 反向代理 include proxy.conf; } error_page 404 /html/404.html; # redirect server error pages to the static page /50x.html # error_page 502 503 /html/502.html; error_page 500 504 /50x.html; location = /50x.html { root html; } } }
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;
http://www.thinksaas.cn/topics/0/277/277535.html