Hi, there
I want to get ip and port under forward proxy use NGINX, a forward proxy sketch like this:
[Client ]-> [NGINX] -> [Internet]
so i want to get proxy's ip and port . i have try and made some modifications to the source code including ngx_http_upstream.c ngx_event_connect.c , there are some details: 1、add local_socket variable to get socket fd in ngx_event_connect_peer() 2、add local_sockaddr to get sockaddr structure in ngx_http_upstream_process_header(), because in this function the proxy had connected(connect() in ngx_event_connect_peer() is nonblocking) to the upstream(web, e.g. google.com) 3、add a $upstream_laddr variable in the ngx_http_upstream.c as ngx_http_upstream_addr_variable() function. 4、set log property like:
fragment
****************************************************************************** log property start
'$remote_addr:$remote_port ($upstream_laddr) [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
****************************************************************************** log property end
However, everthing does not work properly, the debug.log like this:
2013/06/05 16:35:50 [debug] 4978#0: *1 http upstream process header
2013/06/05 16:35:50 [debug] 4978#0: *1 http upstream connect socket: 12
2013/06/05 16:35:50 [debug] 4978#0: *1 http upstream connect sa_family: 21920
2013/06/05 16:35:50 [debug] 4978#0: *1 http upstream connect uri: / HTTP/1.1^M
Host
2013/06/05 16:35:50 [debug] 4978#0: *1 http upstream connect ip: 255.127.0.0:5067 note: Worng ip and Port
2013/06/05 16:35:50 [debug] 4978#0: *1 http proxy status 200 "200 OK"
.......................
2013/06/05 16:38:57 [debug] 4978#0: *14 http upstream connect sa_family: 29728 note: Worng sa_family type
2013/06/05 16:38:57 [debug] 4978#0: *14 http upstream connect uri: /static/channel/focustop/focustop/focustop_105e9cbe.js HTTP/1.1^M
Host
2013/06/05 16:38:57 [debug] 4978#0: *14 http upstream connect ip: 112.111.114.97:25965ÿ^? note:Worng IP and Port
2013/06/05 16:38:57 [debug] 4978#0: *14 http proxy status 304 "304 Not Modified"
.........................
2013/06/05 17:05:32 [debug] 4978#0: *62 http upstream connect socket: 20
2013/06/05 17:05:32 [debug] 4978#0: *62 http upstream connect sa_family: 2
2013/06/05 17:05:32 [debug] 4978#0: *62 http upstream connect uri: /images1/ch/09xwzx/h_1.gif HTTP/1.1^M
Host
2013/06/05 17:05:32 [debug] 4978#0: *62 http upstream connect ip: 192.168.1.163:49217Ëÿ^? note:Correct IP and Port
2013/06/05 17:05:32 [debug] 4978#0: *62 http proxy status 304 "304 Not Modified"
Does i have made mistake for code or worng understanding of NGINX event model. how can make this work correctly to get IP and Port.
Thanks in advance.