2

ngx_http_request_tnginx モジュールの構造体によって、彼/彼女が ngnix で要求したクライアント IP と URI を取得する必要があります。

ご存知のように、nginx モジュールは次のコードのように記述します

ngx_http_sql_handler(ngx_http_request_t *r){//Code Here}

から ip と uri を取得するrにはどうすればよいですか?

4

2 に答える 2

2

IP は次から取得できます。

&r->connection->addr_text

addr_textはngx_str_tです

于 2016-11-23T10:37:42.637 に答える
0

Angx_http_request_tは の typedef ですngx_http_request_shttp://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 文字列としてのみ利用できます。

于 2014-01-05T07:37:02.880 に答える