Rootop 服务器运维与web架构

Nginx用log_format设置日志格式

| 暂无评论

编辑 /usr/local/nginx/conf/nginx.conf 配置文件:

log_format www.rootop.org '$remote_addr - $remote_user [$time_local] "$request" '
 '$status $body_bytes_sent "$http_referer" '
 '"$http_user_agent" $http_x_forwarded_for';

 server
 {
 listen 80;
 server_name www.rootop.org;
 index index.html index.htm index.php;
 root /mnt/data/web/www.rootop.org;

 location ~ .*\.(php|php5)?$
 {
 try_files $uri =404;
 fastcgi_pass unix:/tmp/php-cgi.sock;
 fastcgi_index index.php;
 include fcgi.conf;
 }

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

 location ~* \.(jpg|gif|png|sh|zip|rar)$
 {
 expires 30d;
 valid_referers none blocked *.rootop.org rootop.org;
 if ($invalid_referer) {
 rewrite ^/ http://imgs.rootop.org/images/denylink.jpg;
 }
 }

 access_log /var/logs/www.rootop.org.log www.rootop.org;

 }

相关说明解释
1.$remote_addr 与 $http_x_forwarded_for 用以记录客户端的ip地址;
2.$remote_user :用来记录客户端用户名称;
3.$time_local : 用来记录访问时间与时区;
4.$request : 用来记录请求的url与http协议;
5.$status : 用来记录请求状态;成功是200,
6.$body_bytes_s ent :记录发送给客户端文件主体内容大小;
7.$http_referer :用来记录从那个页面链接访问过来的;
8.$http_user_agent :记录客户端浏览器的相关信息;

Nginx作为Web服务器,位于负载均衡设备、Squid、Nginx反向代理之后,就不能获取到客户端的真实IP地址。
原因是经过反向代理后,由于在客户端和Web服务器之间增加了中间层,因此Web服务器无法直接拿到客户端的IP。
通过$remote_addr变量拿到的将是反向代理服务器的IP地址。但是反向代理服务器在转发请求的HTTP头信息中,
可以增加X-Forwarded-For信息,用以记录原有的客户端IP地址和原来客户端请求的服务器地址。
这时候,就要用log_format指令设置日志格式,让日志记录X-Forearded-For信息中的IP地址,即客户的真实IP。

原创文章,转载请注明。本文链接地址: https://www.rootop.org/pages/2597.html

作者:Venus

服务器运维与性能优化

发表回复