我需要在nginx模块中通过ngx_http_request_t
struct在ngnix中获取客户端ip和uri。
如你所知nginx模块写如下面的代码
ngx_http_sql_handler(ngx_http_request_t *r){//Code Here}
如何从r
获取ip和uri,我该怎么做?
答案 0 :(得分:1)
您可以从以下网址获取IP:
&r->connection->addr_text
addr_text ngx_str_t
答案 1 :(得分:0)
ngx_http_request_t
是ngx_http_request_s
的typedef。请参阅http://lxr.nginx.org/source/src/http/ngx_http.h#0016。
如下所示(来自http://lxr.nginx.org/source/src/http/ngx_http_request.h#0358):
0358 struct ngx_http_request_s {
0359 uint32_t signature; /* "HTTP" */
0360
0361 ngx_connection_t *connection;
0362
0363 void **ctx;
0364 void **main_conf;
0365 void **srv_conf;
0366 void **loc_conf;
0367
0368 ngx_http_event_handler_pt read_event_handler;
0369 ngx_http_event_handler_pt write_event_handler;
...
0394 ngx_str_t request_line;
0395 ngx_str_t uri;
0396 ngx_str_t args;
0397 ngx_str_t exten;
0398 ngx_str_t unparsed_uri;
...
};
ngx_connection_t
是ngx_connection_s
,你可以在http://lxr.nginx.org/source/src/core/ngx_connection.h#0117找到它的定义。
ngx_connection_t
有一个ngx_socket_t
。获得套接字后,您可以从sin_addr.s_addr
获取IP。
URI只是一个nginx字符串。