nginx_ajp_module-masterでコンパイルエラー
nginx_ajp_module-masterでコンパイルエラー
いまどきajpってのも何なんですが。
nginx1.21.6とnginx_ajp_module-masterでmakeするとこんなエラー。
cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs -I src/http -I src/http/modules -I ../nginx_ajp_module-master \ -o objs/addon/nginx_ajp_module-master/ngx_http_ajp.o \ ../nginx_ajp_module-master/ngx_http_ajp.c ../nginx_ajp_module-master/ngx_http_ajp.c: 関数 ‘sc_for_req_get_uri’ 内: ../nginx_ajp_module-master/ngx_http_ajp.c:139:29: エラー: ‘ngx_http_request_t {aka struct ngx_http_request_s}’ has no member named ‘space_in_uri’; did you mean ‘plus_in_uri’? if (r->quoted_uri || r->space_in_uri || r->internal) { ^~~~~~~~~~~~ plus_in_uri make[1]: *** [objs/addon/nginx_ajp_module-master/ngx_http_ajp.o] エラー 1 make[1]: ディレクトリ `/home/murata/nginx/nginx-1.21.6' から出ます make: *** [build] エラー 2
ngx_http_request_s構造体にspace_in_uriってメンバがないぞって言ってる。
むかーしのnginx(1.14あたり)のソースを参照すると確かにある。
/* URI with "%" */ unsigned quoted_uri:1; /* URI with "+" */ unsigned plus_in_uri:1; /* URI with " " */ unsigned space_in_uri:1; unsigned invalid_header:1; unsigned add_uri_to_alias:1; unsigned valid_location:1; unsigned valid_unparsed_uri:1; unsigned uri_changed:1; unsigned uri_changes:4;
同じ構造体を最新(1.21.6)でみるとこんな。
unsigned http_state:4; /* URI with "/." and on Win32 with "//" */ unsigned complex_uri:1; /* URI with "%" */ unsigned quoted_uri:1; /* URI with "+" */ unsigned plus_in_uri:1; /* URI with empty path */ unsigned empty_path_in_uri:1; ||< empty_path_in_uriって名前に変わってるみたいです。 nginx_ajp_module-master/ngx_http_ajp.cを編集してOK。