varnish代理nginx,讓nginx記錄真實client的ip


   最近在研究學習varnish反向代理+緩存,google了好久以後,實現了讓nginx日誌記錄真實client的ip地址,在這一個是記錄一下,一個是給大夥分享下。
php

個人主要配置以下:
nginx

varnish配置文件:
緩存

sub vcl_recv {
  #client ip.
  if (req.restarts == 0) {
    if (req.http.x-forwarded-for) {
      set req.http.X-Forwarded-For = req.http.X-Forwarded-For + ", " + client.ip;
    } else {
      set req.http.X-Forwarded-For = client.ip;
    }
  }

nginx日誌相關配置:
bash


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


以後日誌中就可以看到我訪問的信息:ide

192.168.102.126 - - [29/Nov/2013:14:21:24 +0800] "GET /zabbix/styles/themes/originalblue/p_w_picpaths/bg_h-hard_55.png HTTP/1.1" 304 0 "http://172.16.220.241/zabbix/slideconf.php?ddreset=1&sid=fdd3398fd573d331"
192.168.102.126 - - [29/Nov/2013:14:21:24 +0800] "GET /zabbix/p_w_picpaths/general/sort_up.png HTTP/1.1" 304 0 "http://172.16.220.241/zabbix/slideconf.php?ddreset=1&sid=fdd3398fd573d331"
192.168.102.126 - - [29/Nov/2013:14:21:24 +0800] "GET /zabbix/p_w_picpaths/gradients/menu_not_active.gif HTTP/1.1" 304 0 "http://172.16.220.241/zabbix/slideconf.php?ddreset=1&sid=fdd3398fd573d331"
192.168.102.126 - - [29/Nov/2013:14:21:24 +0800] "GET /zabbix/p_w_picpaths/general/zabbix.png HTTP/1.1" 304 0 "http://172.16.220.241/zabbix/slideconf.php?ddreset=1&sid=fdd3398fd573d331"


這和網上別的帖子基本沒什麼區別,並且尚未他們的詳細,但這裏有個特別須要注意的地方,否則你怎麼配置都不會生效的:學習

必定要保證在varnish的配置中,關於x-forward的部分位於vcl_revc的最前面。
google

相關文章
相關標籤/搜索