ngx_http_request_t
nginx モジュールの構造体によって、彼/彼女が ngnix で要求したクライアント IP と URI を取得する必要があります。
ご存知のように、nginx モジュールは次のコードのように記述します
ngx_http_sql_handler(ngx_http_request_t *r){//Code Here}
から ip と uri を取得するr
にはどうすればよいですか?
IP は次から取得できます。
&r->connection->addr_text
addr_textはngx_str_tです
Angx_http_request_t
は の typedef ですngx_http_request_s
。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
ます。ソケットを取得したら、から IP を取得できますsin_addr.s_addr
。
URI は nginx 文字列としてのみ利用できます。