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.
Posted at Nginx Forum: