|
14 | 14 | #include "ngx_http_lua_directive.h" |
15 | 15 | #include "ngx_http_lua_capturefilter.h" |
16 | 16 | #include "ngx_http_lua_contentby.h" |
| 17 | +#include "ngx_http_lua_server_rewriteby.h" |
17 | 18 | #include "ngx_http_lua_rewriteby.h" |
18 | 19 | #include "ngx_http_lua_accessby.h" |
19 | 20 | #include "ngx_http_lua_logby.h" |
@@ -290,6 +291,22 @@ static ngx_command_t ngx_http_lua_cmds[] = { |
290 | 291 | (void *) ngx_http_lua_filter_set_by_lua_file }, |
291 | 292 | #endif |
292 | 293 |
|
| 294 | + /* server_rewrite_by_lua_block { <inline script> } */ |
| 295 | + { ngx_string("server_rewrite_by_lua_block"), |
| 296 | + NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_BLOCK|NGX_CONF_NOARGS, |
| 297 | + ngx_http_lua_server_rewrite_by_lua_block, |
| 298 | + NGX_HTTP_LOC_CONF_OFFSET, |
| 299 | + 0, |
| 300 | + (void *) ngx_http_lua_server_rewrite_handler_inline }, |
| 301 | + |
| 302 | + /* server_rewrite_by_lua_file filename; */ |
| 303 | + { ngx_string("server_rewrite_by_lua_file"), |
| 304 | + NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1, |
| 305 | + ngx_http_lua_server_rewrite_by_lua, |
| 306 | + NGX_HTTP_LOC_CONF_OFFSET, |
| 307 | + 0, |
| 308 | + (void *) ngx_http_lua_server_rewrite_handler_file }, |
| 309 | + |
293 | 310 | /* rewrite_by_lua "<inline script>" */ |
294 | 311 | { ngx_string("rewrite_by_lua"), |
295 | 312 | NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF |
@@ -752,6 +769,16 @@ ngx_http_lua_init(ngx_conf_t *cf) |
752 | 769 |
|
753 | 770 | cmcf = ngx_http_conf_get_module_main_conf(cf, ngx_http_core_module); |
754 | 771 |
|
| 772 | + if (lmcf->requires_server_rewrite) { |
| 773 | + h = ngx_array_push( |
| 774 | + &cmcf->phases[NGX_HTTP_SERVER_REWRITE_PHASE].handlers); |
| 775 | + if (h == NULL) { |
| 776 | + return NGX_ERROR; |
| 777 | + } |
| 778 | + |
| 779 | + *h = ngx_http_lua_server_rewrite_handler; |
| 780 | + } |
| 781 | + |
755 | 782 | if (lmcf->requires_rewrite) { |
756 | 783 | h = ngx_array_push(&cmcf->phases[NGX_HTTP_REWRITE_PHASE].handlers); |
757 | 784 | if (h == NULL) { |
@@ -1366,6 +1393,14 @@ ngx_http_lua_merge_loc_conf(ngx_conf_t *cf, void *parent, void *child) |
1366 | 1393 | ngx_http_lua_loc_conf_t *prev = parent; |
1367 | 1394 | ngx_http_lua_loc_conf_t *conf = child; |
1368 | 1395 |
|
| 1396 | + if (conf->server_rewrite_src.value.len == 0) { |
| 1397 | + conf->server_rewrite_src = prev->server_rewrite_src; |
| 1398 | + conf->server_rewrite_handler = prev->server_rewrite_handler; |
| 1399 | + conf->server_rewrite_src_ref = prev->server_rewrite_src_ref; |
| 1400 | + conf->server_rewrite_src_key = prev->server_rewrite_src_key; |
| 1401 | + conf->server_rewrite_chunkname = prev->server_rewrite_chunkname; |
| 1402 | + } |
| 1403 | + |
1369 | 1404 | if (conf->rewrite_src.value.len == 0) { |
1370 | 1405 | conf->rewrite_src = prev->rewrite_src; |
1371 | 1406 | conf->rewrite_handler = prev->rewrite_handler; |
|
0 commit comments