1 //AUTOGENERATED, do not edit! see nchan_commands.rb 2 static ngx_conf_post_t nchan_redis_namespace__post_handler = { 3 ngx_conf_process_redis_namespace_slot 4 }; 5 6 static ngx_command_t nchan_commands[] = { 7 { ngx_string("nchan_channel_id"), 8 NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1|NGX_CONF_TAKE2|NGX_CONF_TAKE3|NGX_CONF_TAKE4|NGX_CONF_TAKE5|NGX_CONF_TAKE6|NGX_CONF_TAKE7, 9 nchan_set_pubsub_channel_id, 10 NGX_HTTP_LOC_CONF_OFFSET, 11 0, 12 NULL } , 13 { ngx_string("nchan_pubsub_channel_id"), //alt for nchan_channel_id 14 NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1|NGX_CONF_TAKE2|NGX_CONF_TAKE3|NGX_CONF_TAKE4|NGX_CONF_TAKE5|NGX_CONF_TAKE6|NGX_CONF_TAKE7, 15 nchan_set_pubsub_channel_id, 16 NGX_HTTP_LOC_CONF_OFFSET, 17 0, 18 NULL } , 19 20 { ngx_string("nchan_publisher_channel_id"), 21 NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1|NGX_CONF_TAKE2|NGX_CONF_TAKE3|NGX_CONF_TAKE4|NGX_CONF_TAKE5|NGX_CONF_TAKE6|NGX_CONF_TAKE7, 22 nchan_set_pub_channel_id, 23 NGX_HTTP_LOC_CONF_OFFSET, 24 0, 25 NULL } , 26 { ngx_string("nchan_pub_channel_id"), //alt for nchan_publisher_channel_id 27 NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1|NGX_CONF_TAKE2|NGX_CONF_TAKE3|NGX_CONF_TAKE4|NGX_CONF_TAKE5|NGX_CONF_TAKE6|NGX_CONF_TAKE7, 28 nchan_set_pub_channel_id, 29 NGX_HTTP_LOC_CONF_OFFSET, 30 0, 31 NULL } , 32 33 { ngx_string("nchan_publisher_upstream_request"), 34 NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1, 35 ngx_http_set_complex_value_slot, 36 NGX_HTTP_LOC_CONF_OFFSET, 37 offsetof(nchan_loc_conf_t, publisher_upstream_request_url), 38 NULL } , 39 40 { ngx_string("nchan_deflate_message_for_websocket"), 41 NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, 42 nchan_set_message_compression_slot, 43 NGX_HTTP_LOC_CONF_OFFSET, 44 0, 45 NULL } , 46 47 { ngx_string("nchan_channel_id_split_delimiter"), 48 NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1, 49 ngx_conf_set_str_slot, 50 NGX_HTTP_LOC_CONF_OFFSET, 51 offsetof(nchan_loc_conf_t, channel_id_split_delimiter), 52 NULL } , 53 54 { ngx_string("nchan_subscriber_channel_id"), 55 NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1|NGX_CONF_TAKE2|NGX_CONF_TAKE3|NGX_CONF_TAKE4|NGX_CONF_TAKE5|NGX_CONF_TAKE6|NGX_CONF_TAKE7, 56 nchan_set_sub_channel_id, 57 NGX_HTTP_LOC_CONF_OFFSET, 58 0, 59 NULL } , 60 { ngx_string("nchan_sub_channel_id"), //alt for nchan_subscriber_channel_id 61 NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1|NGX_CONF_TAKE2|NGX_CONF_TAKE3|NGX_CONF_TAKE4|NGX_CONF_TAKE5|NGX_CONF_TAKE6|NGX_CONF_TAKE7, 62 nchan_set_sub_channel_id, 63 NGX_HTTP_LOC_CONF_OFFSET, 64 0, 65 NULL } , 66 67 { ngx_string("nchan_pubsub"), 68 NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_NOARGS|NGX_CONF_TAKE1|NGX_CONF_TAKE2|NGX_CONF_TAKE3|NGX_CONF_TAKE4|NGX_CONF_TAKE5|NGX_CONF_TAKE6, 69 nchan_pubsub_directive, 70 NGX_HTTP_LOC_CONF_OFFSET, 71 0, 72 NULL } , 73 { ngx_string("nchan_pubsub_location"), //alt for nchan_pubsub 74 NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_NOARGS|NGX_CONF_TAKE1|NGX_CONF_TAKE2|NGX_CONF_TAKE3|NGX_CONF_TAKE4|NGX_CONF_TAKE5|NGX_CONF_TAKE6, 75 nchan_pubsub_directive, 76 NGX_HTTP_LOC_CONF_OFFSET, 77 0, 78 NULL } , 79 80 { ngx_string("nchan_subscriber_info"), 81 NGX_HTTP_LOC_CONF|NGX_CONF_NOARGS, 82 nchan_subscriber_info_directive, 83 NGX_HTTP_LOC_CONF_OFFSET, 84 0, 85 NULL } , 86 87 { ngx_string("nchan_subscriber_info_string"), 88 NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, 89 ngx_http_set_complex_value_slot, 90 NGX_HTTP_LOC_CONF_OFFSET, 91 offsetof(nchan_loc_conf_t, subscriber_info_string), 92 NULL } , 93 94 { ngx_string("nchan_longpoll_multipart_response"), 95 NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1, 96 nchan_set_longpoll_multipart, 97 NGX_HTTP_LOC_CONF_OFFSET, 98 offsetof(nchan_loc_conf_t, longpoll_multimsg), 99 NULL } , 100 101 { ngx_string("nchan_eventsource_event"), 102 NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1, 103 ngx_conf_set_str_slot, 104 NGX_HTTP_LOC_CONF_OFFSET, 105 offsetof(nchan_loc_conf_t, eventsource_event), 106 NULL } , 107 108 { ngx_string("nchan_eventsource_ping_comment"), 109 NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1, 110 ngx_conf_set_str_slot_no_newlines, 111 NGX_HTTP_LOC_CONF_OFFSET, 112 offsetof(nchan_loc_conf_t, eventsource_ping.comment), 113 NULL } , 114 115 { ngx_string("nchan_eventsource_ping_event"), 116 NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1, 117 ngx_conf_set_str_slot_no_newlines, 118 NGX_HTTP_LOC_CONF_OFFSET, 119 offsetof(nchan_loc_conf_t, eventsource_ping.event), 120 NULL } , 121 122 { ngx_string("nchan_eventsource_ping_data"), 123 NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1, 124 ngx_conf_set_str_slot_no_newlines, 125 NGX_HTTP_LOC_CONF_OFFSET, 126 offsetof(nchan_loc_conf_t, eventsource_ping.data), 127 NULL } , 128 129 { ngx_string("nchan_eventsource_ping_interval"), 130 NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1, 131 ngx_conf_set_sec_slot, 132 NGX_HTTP_LOC_CONF_OFFSET, 133 offsetof(nchan_loc_conf_t, eventsource_ping.interval), 134 NULL } , 135 136 { ngx_string("nchan_subscriber"), 137 NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_NOARGS|NGX_CONF_TAKE1|NGX_CONF_TAKE2|NGX_CONF_TAKE3|NGX_CONF_TAKE4|NGX_CONF_TAKE5, 138 nchan_subscriber_directive, 139 NGX_HTTP_LOC_CONF_OFFSET, 140 0, 141 NULL } , 142 { ngx_string("push_subscriber"), //legacy for nchan_subscriber 143 NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_NOARGS|NGX_CONF_TAKE1|NGX_CONF_TAKE2|NGX_CONF_TAKE3|NGX_CONF_TAKE4|NGX_CONF_TAKE5, 144 nchan_subscriber_directive, 145 NGX_HTTP_LOC_CONF_OFFSET, 146 0, 147 NULL } , 148 { ngx_string("nchan_subscriber_location"), //alt for nchan_subscriber 149 NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_NOARGS|NGX_CONF_TAKE1|NGX_CONF_TAKE2|NGX_CONF_TAKE3|NGX_CONF_TAKE4|NGX_CONF_TAKE5, 150 nchan_subscriber_directive, 151 NGX_HTTP_LOC_CONF_OFFSET, 152 0, 153 NULL } , 154 155 { ngx_string("nchan_subscriber_compound_etag_message_id"), 156 NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1, 157 ngx_conf_set_flag_slot, 158 NGX_HTTP_LOC_CONF_OFFSET, 159 offsetof(nchan_loc_conf_t, msg_in_etag_only), 160 NULL } , 161 162 { ngx_string("nchan_subscriber_message_id_custom_etag_header"), 163 NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1, 164 ngx_conf_set_str_slot, 165 NGX_HTTP_LOC_CONF_OFFSET, 166 offsetof(nchan_loc_conf_t, custom_msgtag_header), 167 NULL } , 168 169 { ngx_string("nchan_subscriber_last_message_id"), 170 NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1|NGX_CONF_TAKE2|NGX_CONF_TAKE3|NGX_CONF_TAKE4|NGX_CONF_TAKE5, 171 nchan_subscriber_last_message_id, 172 NGX_HTTP_LOC_CONF_OFFSET, 173 0, 174 NULL } , 175 176 { ngx_string("nchan_subscriber_http_raw_stream_separator"), 177 NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1, 178 nchan_set_raw_subscriber_separator, 179 NGX_HTTP_LOC_CONF_OFFSET, 180 offsetof(nchan_loc_conf_t, subscriber_http_raw_stream_separator), 181 NULL } , 182 183 { ngx_string("nchan_subscriber_first_message"), 184 NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1, 185 nchan_subscriber_first_message_directive, 186 NGX_HTTP_LOC_CONF_OFFSET, 187 0, 188 NULL } , 189 190 { ngx_string("nchan_websocket_ping_interval"), 191 NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1, 192 ngx_conf_set_sec_slot, 193 NGX_HTTP_LOC_CONF_OFFSET, 194 offsetof(nchan_loc_conf_t, websocket_ping_interval), 195 NULL } , 196 197 { ngx_string("nchan_websocket_client_heartbeat"), 198 NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE2, 199 nchan_websocket_heartbeat_directive, 200 NGX_HTTP_LOC_CONF_OFFSET, 201 offsetof(nchan_loc_conf_t, websocket_heartbeat), 202 NULL } , 203 204 { ngx_string("nchan_publisher"), 205 NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_NOARGS|NGX_CONF_TAKE1|NGX_CONF_TAKE2, 206 nchan_publisher_directive, 207 NGX_HTTP_LOC_CONF_OFFSET, 208 0, 209 NULL } , 210 { ngx_string("push_publisher"), //legacy for nchan_publisher 211 NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_NOARGS|NGX_CONF_TAKE1|NGX_CONF_TAKE2, 212 nchan_publisher_directive, 213 NGX_HTTP_LOC_CONF_OFFSET, 214 0, 215 NULL } , 216 { ngx_string("nchan_publisher_location"), //alt for nchan_publisher 217 NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_NOARGS|NGX_CONF_TAKE1|NGX_CONF_TAKE2, 218 nchan_publisher_directive, 219 NGX_HTTP_LOC_CONF_OFFSET, 220 0, 221 NULL } , 222 223 { ngx_string("nchan_subscriber_timeout"), 224 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1, 225 ngx_conf_set_sec_slot, 226 NGX_HTTP_LOC_CONF_OFFSET, 227 offsetof(nchan_loc_conf_t, subscriber_timeout), 228 NULL } , 229 { ngx_string("push_subscriber_timeout"), //legacy for nchan_subscriber_timeout 230 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1, 231 ngx_conf_set_sec_slot, 232 NGX_HTTP_LOC_CONF_OFFSET, 233 offsetof(nchan_loc_conf_t, subscriber_timeout), 234 NULL } , 235 236 { ngx_string("nchan_authorize_request"), 237 NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1, 238 ngx_http_set_complex_value_slot, 239 NGX_HTTP_LOC_CONF_OFFSET, 240 offsetof(nchan_loc_conf_t, authorize_request_url), 241 NULL } , 242 243 { ngx_string("nchan_subscribe_request"), 244 NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1, 245 ngx_http_set_complex_value_slot, 246 NGX_HTTP_LOC_CONF_OFFSET, 247 offsetof(nchan_loc_conf_t, subscribe_request_url), 248 NULL } , 249 250 { ngx_string("nchan_unsubscribe_request"), 251 NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1, 252 ngx_http_set_unsubscribe_request_url, 253 NGX_HTTP_LOC_CONF_OFFSET, 254 offsetof(nchan_loc_conf_t, unsubscribe_request_url), 255 NULL } , 256 257 { ngx_string("nchan_message_temp_path"), 258 NGX_HTTP_MAIN_CONF|NGX_CONF_TAKE1, 259 ngx_conf_set_path_slot, 260 NGX_HTTP_MAIN_CONF_OFFSET, 261 offsetof(nchan_main_conf_t, message_temp_path), 262 NULL } , 263 264 { ngx_string("nchan_store_messages"), 265 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1, 266 nchan_store_messages_directive, 267 NGX_HTTP_LOC_CONF_OFFSET, 268 0, 269 NULL } , 270 { ngx_string("push_store_messages"), //legacy for nchan_store_messages 271 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1, 272 nchan_store_messages_directive, 273 NGX_HTTP_LOC_CONF_OFFSET, 274 0, 275 NULL } , 276 277 { ngx_string("nchan_shared_memory_size"), 278 NGX_HTTP_MAIN_CONF|NGX_CONF_TAKE1, 279 nchan_conf_set_size_slot, 280 NGX_HTTP_MAIN_CONF_OFFSET, 281 offsetof(nchan_main_conf_t, shm_size), 282 NULL } , 283 { ngx_string("push_max_reserved_memory"), //legacy for nchan_shared_memory_size 284 NGX_HTTP_MAIN_CONF|NGX_CONF_TAKE1, 285 nchan_conf_set_size_slot, 286 NGX_HTTP_MAIN_CONF_OFFSET, 287 offsetof(nchan_main_conf_t, shm_size), 288 NULL } , 289 { ngx_string("nchan_max_reserved_memory"), //legacy for nchan_shared_memory_size 290 NGX_HTTP_MAIN_CONF|NGX_CONF_TAKE1, 291 nchan_conf_set_size_slot, 292 NGX_HTTP_MAIN_CONF_OFFSET, 293 offsetof(nchan_main_conf_t, shm_size), 294 NULL } , 295 296 { ngx_string("nchan_permessage_deflate_compression_level"), 297 NGX_HTTP_MAIN_CONF|NGX_CONF_TAKE1, 298 nchan_conf_deflate_compression_level_directive, 299 NGX_HTTP_MAIN_CONF_OFFSET, 300 0, 301 NULL } , 302 303 { ngx_string("nchan_permessage_deflate_compression_strategy"), 304 NGX_HTTP_MAIN_CONF|NGX_CONF_TAKE1, 305 nchan_conf_deflate_compression_strategy_directive, 306 NGX_HTTP_MAIN_CONF_OFFSET, 307 0, 308 NULL } , 309 310 { ngx_string("nchan_permessage_deflate_compression_window"), 311 NGX_HTTP_MAIN_CONF|NGX_CONF_TAKE1, 312 nchan_conf_deflate_compression_window_directive, 313 NGX_HTTP_MAIN_CONF_OFFSET, 314 0, 315 NULL } , 316 317 { ngx_string("nchan_permessage_deflate_compression_memlevel"), 318 NGX_HTTP_MAIN_CONF|NGX_CONF_TAKE1, 319 nchan_conf_deflate_compression_memlevel_directive, 320 NGX_HTTP_MAIN_CONF_OFFSET, 321 0, 322 NULL } , 323 324 { ngx_string("nchan_redis_url"), 325 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, 326 ngx_conf_set_redis_url, 327 NGX_HTTP_LOC_CONF_OFFSET, 328 offsetof(nchan_loc_conf_t, redis.url), 329 NULL } , 330 331 { ngx_string("nchan_redis_pass"), 332 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, 333 ngx_conf_set_redis_upstream_pass, 334 NGX_HTTP_LOC_CONF_OFFSET, 335 offsetof(nchan_loc_conf_t, redis), 336 NULL } , 337 338 { ngx_string("nchan_redis_pass_inheritable"), 339 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, 340 ngx_conf_set_flag_slot, 341 NGX_HTTP_LOC_CONF_OFFSET, 342 offsetof(nchan_loc_conf_t, redis.upstream_inheritable), 343 NULL } , 344 345 { ngx_string("nchan_redis_publish_msgpacked_max_size"), 346 NGX_HTTP_MAIN_CONF|NGX_CONF_TAKE1, 347 ngx_conf_set_size_slot, 348 NGX_HTTP_MAIN_CONF_OFFSET, 349 offsetof(nchan_main_conf_t, redis_publish_message_msgkey_size), 350 NULL } , 351 352 { ngx_string("nchan_redis_discovered_ip_range_blacklist"), 353 NGX_HTTP_UPS_CONF|NGX_CONF_TAKE1|NGX_CONF_TAKE2|NGX_CONF_TAKE3|NGX_CONF_TAKE4|NGX_CONF_TAKE5|NGX_CONF_TAKE6|NGX_CONF_TAKE7, 354 ngx_conf_set_redis_ip_blacklist, 355 NGX_HTTP_SRV_CONF_OFFSET, 356 0, 357 NULL } , 358 359 { ngx_string("nchan_redis_server"), 360 NGX_HTTP_UPS_CONF|NGX_CONF_TAKE1, 361 ngx_conf_upstream_redis_server, 362 NGX_HTTP_LOC_CONF_OFFSET, 363 0, 364 NULL } , 365 366 { ngx_string("nchan_redis_storage_mode"), 367 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_UPS_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, 368 ngx_conf_set_redis_storage_mode_slot, 369 NGX_HTTP_LOC_CONF_OFFSET, 370 offsetof(nchan_loc_conf_t, redis.storage_mode), 371 NULL } , 372 373 { ngx_string("nchan_redis_nostore_fastpublish"), 374 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_UPS_CONF|NGX_CONF_TAKE1, 375 ngx_conf_set_flag_slot, 376 NGX_HTTP_LOC_CONF_OFFSET, 377 offsetof(nchan_loc_conf_t, redis.nostore_fastpublish), 378 NULL } , 379 380 { ngx_string("nchan_use_redis"), 381 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, 382 ngx_conf_enable_redis, 383 NGX_HTTP_LOC_CONF_OFFSET, 384 offsetof(nchan_loc_conf_t, redis.url_enabled), 385 NULL } , 386 387 { ngx_string("nchan_redis_ping_interval"), 388 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_UPS_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, 389 ngx_conf_set_sec_slot, 390 NGX_HTTP_LOC_CONF_OFFSET, 391 offsetof(nchan_loc_conf_t, redis.ping_interval), 392 NULL } , 393 394 { ngx_string("nchan_redis_cluster_check_interval"), 395 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_UPS_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, 396 ngx_conf_set_sec_slot, 397 NGX_HTTP_LOC_CONF_OFFSET, 398 offsetof(nchan_loc_conf_t, redis.cluster_check_interval), 399 NULL } , 400 401 { ngx_string("nchan_redis_wait_after_connecting"), 402 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, 403 nchan_ignore_obsolete_setting, 404 NGX_HTTP_LOC_CONF_OFFSET, 405 0, 406 NULL } , 407 408 { ngx_string("nchan_redis_connect_timeout"), 409 NGX_HTTP_UPS_CONF|NGX_CONF_TAKE1, 410 ngx_conf_set_msec_slot, 411 NGX_HTTP_SRV_CONF_OFFSET, 412 offsetof(nchan_srv_conf_t, redis.connect_timeout), 413 NULL } , 414 415 { ngx_string("nchan_redis_subscribe_weights"), 416 NGX_HTTP_UPS_CONF|NGX_CONF_TAKE1|NGX_CONF_TAKE2, 417 ngx_conf_set_redis_subscribe_weights, 418 NGX_HTTP_SRV_CONF_OFFSET, 419 0, 420 NULL } , 421 422 { ngx_string("nchan_redis_optimize_target"), 423 NGX_HTTP_UPS_CONF|NGX_CONF_TAKE1, 424 ngx_conf_set_redis_optimize_target, 425 NGX_HTTP_SRV_CONF_OFFSET, 426 0, 427 NULL } , 428 429 { ngx_string("nchan_redis_namespace"), 430 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_UPS_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, 431 ngx_conf_set_str_slot, 432 NGX_HTTP_LOC_CONF_OFFSET, 433 offsetof(nchan_loc_conf_t, redis.namespace), 434 &nchan_redis_namespace__post_handler } , 435 436 { ngx_string("nchan_redis_fakesub_timer_interval"), 437 NGX_HTTP_MAIN_CONF|NGX_CONF_TAKE1, 438 ngx_conf_set_msec_slot, 439 NGX_HTTP_MAIN_CONF_OFFSET, 440 offsetof(nchan_main_conf_t, redis_fakesub_timer_interval), 441 NULL } , 442 443 { ngx_string("nchan_redis_idle_channel_cache_timeout"), 444 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, 445 ngx_conf_set_sec_slot, 446 NGX_HTTP_LOC_CONF_OFFSET, 447 offsetof(nchan_loc_conf_t, redis_idle_channel_cache_timeout), 448 NULL } , 449 450 { ngx_string("nchan_message_timeout"), 451 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, 452 nchan_set_message_timeout, 453 NGX_HTTP_LOC_CONF_OFFSET, 454 offsetof(nchan_loc_conf_t, message_timeout), 455 NULL } , 456 { ngx_string("push_message_timeout"), //legacy for nchan_message_timeout 457 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, 458 nchan_set_message_timeout, 459 NGX_HTTP_LOC_CONF_OFFSET, 460 offsetof(nchan_loc_conf_t, message_timeout), 461 NULL } , 462 463 { ngx_string("nchan_message_buffer_length"), 464 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, 465 nchan_set_message_buffer_length, 466 NGX_HTTP_LOC_CONF_OFFSET, 467 offsetof(nchan_loc_conf_t, max_messages), 468 NULL } , 469 { ngx_string("push_max_message_buffer_length"), //legacy for nchan_message_buffer_length 470 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, 471 nchan_set_message_buffer_length, 472 NGX_HTTP_LOC_CONF_OFFSET, 473 offsetof(nchan_loc_conf_t, max_messages), 474 NULL } , 475 { ngx_string("push_message_buffer_length"), //legacy for nchan_message_buffer_length 476 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, 477 nchan_set_message_buffer_length, 478 NGX_HTTP_LOC_CONF_OFFSET, 479 offsetof(nchan_loc_conf_t, max_messages), 480 NULL } , 481 { ngx_string("nchan_message_max_buffer_length"), //alt for nchan_message_buffer_length 482 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, 483 nchan_set_message_buffer_length, 484 NGX_HTTP_LOC_CONF_OFFSET, 485 offsetof(nchan_loc_conf_t, max_messages), 486 NULL } , 487 488 { ngx_string("nchan_subscribe_existing_channels_only"), 489 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, 490 ngx_conf_set_flag_slot, 491 NGX_HTTP_LOC_CONF_OFFSET, 492 offsetof(nchan_loc_conf_t, subscribe_only_existing_channel), 493 NULL } , 494 { ngx_string("push_authorized_channels_only"), //legacy for nchan_subscribe_existing_channels_only 495 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, 496 ngx_conf_set_flag_slot, 497 NGX_HTTP_LOC_CONF_OFFSET, 498 offsetof(nchan_loc_conf_t, subscribe_only_existing_channel), 499 NULL } , 500 501 { ngx_string("nchan_access_control_allow_origin"), 502 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1, 503 ngx_http_set_complex_value_slot, 504 NGX_HTTP_LOC_CONF_OFFSET, 505 offsetof(nchan_loc_conf_t, allow_origin), 506 NULL } , 507 508 { ngx_string("nchan_access_control_allow_credentials"), 509 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1, 510 ngx_conf_set_flag_slot, 511 NGX_HTTP_LOC_CONF_OFFSET, 512 offsetof(nchan_loc_conf_t, allow_credentials), 513 NULL } , 514 515 { ngx_string("nchan_channel_group"), 516 NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1, 517 ngx_http_set_complex_value_slot, 518 NGX_HTTP_LOC_CONF_OFFSET, 519 offsetof(nchan_loc_conf_t, channel_group), 520 NULL } , 521 { ngx_string("push_channel_group"), //legacy for nchan_channel_group 522 NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1, 523 ngx_http_set_complex_value_slot, 524 NGX_HTTP_LOC_CONF_OFFSET, 525 offsetof(nchan_loc_conf_t, channel_group), 526 NULL } , 527 528 { ngx_string("nchan_channel_group_accounting"), 529 NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, 530 ngx_conf_set_flag_slot, 531 NGX_HTTP_LOC_CONF_OFFSET, 532 offsetof(nchan_loc_conf_t, group.enable_accounting), 533 NULL } , 534 535 { ngx_string("nchan_group_location"), 536 NGX_HTTP_LOC_CONF|NGX_CONF_NOARGS|NGX_CONF_TAKE1|NGX_CONF_TAKE2|NGX_CONF_TAKE3, 537 nchan_group_directive, 538 NGX_HTTP_LOC_CONF_OFFSET, 539 0, 540 NULL } , 541 542 { ngx_string("nchan_group_max_channels"), 543 NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, 544 ngx_http_set_complex_value_slot, 545 NGX_HTTP_LOC_CONF_OFFSET, 546 offsetof(nchan_loc_conf_t, group.max_channels), 547 NULL } , 548 549 { ngx_string("nchan_group_max_messages"), 550 NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, 551 ngx_http_set_complex_value_slot, 552 NGX_HTTP_LOC_CONF_OFFSET, 553 offsetof(nchan_loc_conf_t, group.max_messages), 554 NULL } , 555 556 { ngx_string("nchan_group_max_messages_memory"), 557 NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, 558 ngx_http_set_complex_value_slot, 559 NGX_HTTP_LOC_CONF_OFFSET, 560 offsetof(nchan_loc_conf_t, group.max_messages_shm_bytes), 561 NULL } , 562 563 { ngx_string("nchan_group_max_messages_disk"), 564 NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, 565 ngx_http_set_complex_value_slot, 566 NGX_HTTP_LOC_CONF_OFFSET, 567 offsetof(nchan_loc_conf_t, group.max_messages_file_bytes), 568 NULL } , 569 570 { ngx_string("nchan_group_max_subscribers"), 571 NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, 572 ngx_http_set_complex_value_slot, 573 NGX_HTTP_LOC_CONF_OFFSET, 574 offsetof(nchan_loc_conf_t, group.max_subscribers), 575 NULL } , 576 577 { ngx_string("nchan_channel_events_channel_id"), 578 NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1, 579 nchan_set_channel_events_channel_id, 580 NGX_HTTP_LOC_CONF_OFFSET, 581 0, 582 NULL } , 583 584 { ngx_string("nchan_stub_status"), 585 NGX_HTTP_LOC_CONF|NGX_CONF_NOARGS, 586 nchan_stub_status_directive, 587 NGX_HTTP_LOC_CONF_OFFSET, 588 0, 589 NULL } , 590 591 { ngx_string("nchan_channel_event_string"), 592 NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1, 593 ngx_http_set_complex_value_slot, 594 NGX_HTTP_LOC_CONF_OFFSET, 595 offsetof(nchan_loc_conf_t, channel_event_string), 596 NULL } , 597 598 { ngx_string("nchan_max_channel_id_length"), 599 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, 600 ngx_conf_set_num_slot, 601 NGX_HTTP_LOC_CONF_OFFSET, 602 offsetof(nchan_loc_conf_t, max_channel_id_length), 603 NULL } , 604 { ngx_string("push_max_channel_id_length"), //legacy for nchan_max_channel_id_length 605 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, 606 ngx_conf_set_num_slot, 607 NGX_HTTP_LOC_CONF_OFFSET, 608 offsetof(nchan_loc_conf_t, max_channel_id_length), 609 NULL } , 610 611 { ngx_string("nchan_max_channel_subscribers"), 612 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, 613 ngx_conf_set_num_slot, 614 NGX_HTTP_LOC_CONF_OFFSET, 615 offsetof(nchan_loc_conf_t, max_channel_subscribers), 616 NULL } , 617 { ngx_string("push_max_channel_subscribers"), //legacy for nchan_max_channel_subscribers 618 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, 619 ngx_conf_set_num_slot, 620 NGX_HTTP_LOC_CONF_OFFSET, 621 offsetof(nchan_loc_conf_t, max_channel_subscribers), 622 NULL } , 623 624 { ngx_string("nchan_channel_timeout"), 625 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, 626 ngx_conf_set_sec_slot, 627 NGX_HTTP_LOC_CONF_OFFSET, 628 offsetof(nchan_loc_conf_t, channel_timeout), 629 NULL } , 630 { ngx_string("push_channel_timeout"), //legacy for nchan_channel_timeout 631 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, 632 ngx_conf_set_sec_slot, 633 NGX_HTTP_LOC_CONF_OFFSET, 634 offsetof(nchan_loc_conf_t, channel_timeout), 635 NULL } , 636 637 { ngx_string("nchan_storage_engine"), 638 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, 639 nchan_set_storage_engine, 640 NGX_HTTP_LOC_CONF_OFFSET, 641 offsetof(nchan_loc_conf_t, storage_engine), 642 NULL } , 643 644 { ngx_string("nchan_benchmark"), 645 NGX_HTTP_LOC_CONF|NGX_CONF_NOARGS, 646 nchan_benchmark_directive, 647 NGX_HTTP_LOC_CONF_OFFSET, 648 0, 649 NULL } , 650 651 { ngx_string("nchan_benchmark_time"), 652 NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, 653 ngx_conf_set_sec_slot, 654 NGX_HTTP_LOC_CONF_OFFSET, 655 offsetof(nchan_loc_conf_t, benchmark.time), 656 NULL } , 657 658 { ngx_string("nchan_benchmark_messages_per_channel_per_minute"), 659 NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, 660 ngx_conf_set_num_slot, 661 NGX_HTTP_LOC_CONF_OFFSET, 662 offsetof(nchan_loc_conf_t, benchmark.msgs_per_minute), 663 NULL } , 664 665 { ngx_string("nchan_benchmark_message_padding_bytes"), 666 NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, 667 ngx_conf_set_num_slot, 668 NGX_HTTP_LOC_CONF_OFFSET, 669 offsetof(nchan_loc_conf_t, benchmark.msg_padding), 670 NULL } , 671 672 { ngx_string("nchan_benchmark_channels"), 673 NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, 674 ngx_conf_set_num_slot, 675 NGX_HTTP_LOC_CONF_OFFSET, 676 offsetof(nchan_loc_conf_t, benchmark.channels), 677 NULL } , 678 679 { ngx_string("nchan_benchmark_subscribers_per_channel"), 680 NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, 681 ngx_conf_set_num_slot, 682 NGX_HTTP_LOC_CONF_OFFSET, 683 offsetof(nchan_loc_conf_t, benchmark.subscribers_per_channel), 684 NULL } , 685 686 { ngx_string("nchan_benchmark_subscriber_distribution"), 687 NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, 688 nchan_benchmark_subscriber_distribution_directive, 689 NGX_HTTP_LOC_CONF_OFFSET, 690 offsetof(nchan_loc_conf_t, benchmark.subscriber_distribution), 691 NULL } , 692 693 { ngx_string("nchan_benchmark_publisher_distribution"), 694 NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, 695 nchan_benchmark_publisher_distribution_directive, 696 NGX_HTTP_LOC_CONF_OFFSET, 697 offsetof(nchan_loc_conf_t, benchmark.publisher_distribution), 698 NULL } , 699 700 { ngx_string("push_min_message_buffer_length"), 701 NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1, 702 nchan_ignore_obsolete_setting, 703 NGX_HTTP_LOC_CONF_OFFSET, 704 0, 705 NULL } , 706 707 { ngx_string("push_subscriber_concurrency"), 708 NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1, 709 nchan_ignore_subscriber_concurrency, 710 NGX_HTTP_LOC_CONF_OFFSET, 711 0, 712 NULL } , 713 714 715 ngx_null_command 716 }; 717