passenger 4.0.14 → 4.0.16

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of passenger might be problematic. Click here for more details.

Files changed (121) hide show
  1. data.tar.gz.asc +7 -7
  2. data/NEWS +69 -0
  3. data/bin/passenger-install-apache2-module +7 -1
  4. data/bin/passenger-install-nginx-module +18 -1
  5. data/build/apache2.rb +25 -1
  6. data/build/basics.rb +7 -4
  7. data/build/debian.rb +72 -25
  8. data/build/nginx.rb +24 -0
  9. data/build/packaging.rb +45 -3
  10. data/debian.template/{control → control.template} +17 -8
  11. data/debian.template/ruby-passenger.install.template +1 -0
  12. data/debian.template/rules.template +9 -3
  13. data/dev/run_travis.sh +14 -0
  14. data/doc/Users guide Apache.idmap.txt +64 -48
  15. data/doc/Users guide Apache.txt +127 -93
  16. data/doc/Users guide Nginx.idmap.txt +46 -28
  17. data/doc/Users guide Nginx.txt +100 -12
  18. data/doc/images/{conservative_spawning.png → direct_spawning.png} +0 -0
  19. data/doc/images/{conservative_spawning.svg → direct_spawning.svg} +0 -0
  20. data/doc/users_guide_snippets/installation.txt +107 -66
  21. data/doc/users_guide_snippets/passenger_spawn_method.txt +1 -1
  22. data/doc/users_guide_snippets/rvm_helper_tool.txt +0 -12
  23. data/doc/users_guide_snippets/tips.txt +70 -3
  24. data/doc/users_guide_snippets/under_the_hood/page_caching_support.txt +2 -0
  25. data/doc/users_guide_snippets/under_the_hood/relationship_with_ruby.txt +114 -0
  26. data/ext/apache2/Configuration.cpp +53 -101
  27. data/ext/apache2/Configuration.hpp +19 -41
  28. data/ext/apache2/ConfigurationCommands.cpp +95 -0
  29. data/ext/apache2/ConfigurationCommands.cpp.erb +91 -0
  30. data/ext/apache2/ConfigurationFields.hpp +59 -0
  31. data/ext/apache2/ConfigurationFields.hpp.erb +89 -0
  32. data/ext/apache2/ConfigurationSetters.cpp +223 -0
  33. data/ext/apache2/ConfigurationSetters.cpp.erb +126 -0
  34. data/ext/apache2/CreateDirConfig.cpp +50 -0
  35. data/ext/apache2/CreateDirConfig.cpp.erb +71 -0
  36. data/ext/apache2/Hooks.cpp +6 -0
  37. data/ext/apache2/MergeDirConfig.cpp +103 -0
  38. data/ext/apache2/MergeDirConfig.cpp.erb +81 -0
  39. data/ext/common/ApplicationPool2/AppTypes.cpp +2 -0
  40. data/ext/common/ApplicationPool2/AppTypes.h +2 -0
  41. data/ext/common/ApplicationPool2/Common.h +1 -1
  42. data/ext/common/ApplicationPool2/Group.h +56 -7
  43. data/ext/common/ApplicationPool2/Implementation.cpp +133 -31
  44. data/ext/common/ApplicationPool2/Options.h +23 -2
  45. data/ext/common/ApplicationPool2/Pool.h +8 -1
  46. data/ext/common/ApplicationPool2/Process.h +9 -0
  47. data/ext/common/ApplicationPool2/Session.h +1 -0
  48. data/ext/common/ApplicationPool2/Spawner.h +21 -19
  49. data/ext/common/ApplicationPool2/SuperGroup.h +1 -1
  50. data/ext/common/Constants.h +21 -17
  51. data/ext/common/Constants.h.erb +1 -1
  52. data/ext/common/Exceptions.h +19 -0
  53. data/ext/common/ServerInstanceDir.h +8 -4
  54. data/ext/common/Utils.cpp +33 -1
  55. data/ext/common/Utils.h +14 -0
  56. data/ext/common/Utils/StrIntUtils.cpp +16 -0
  57. data/ext/common/Utils/StrIntUtils.h +5 -0
  58. data/ext/common/agents/HelperAgent/Main.cpp +5 -5
  59. data/ext/common/agents/HelperAgent/RequestHandler.h +94 -45
  60. data/ext/common/agents/LoggingAgent/Main.cpp +10 -26
  61. data/ext/common/agents/Watchdog/Main.cpp +4 -15
  62. data/ext/nginx/CacheLocationConfig.c +501 -0
  63. data/ext/nginx/CacheLocationConfig.c.erb +140 -0
  64. data/ext/nginx/Configuration.c +29 -453
  65. data/ext/nginx/Configuration.h +3 -21
  66. data/ext/nginx/ConfigurationCommands.c +501 -0
  67. data/ext/nginx/ConfigurationCommands.c.erb +136 -0
  68. data/ext/nginx/ConfigurationFields.h +89 -0
  69. data/ext/nginx/ConfigurationFields.h.erb +85 -0
  70. data/ext/nginx/ContentHandler.c +3 -166
  71. data/ext/nginx/CreateLocationConfig.c +146 -0
  72. data/ext/nginx/CreateLocationConfig.c.erb +70 -0
  73. data/ext/nginx/MergeLocationConfig.c +166 -0
  74. data/ext/nginx/MergeLocationConfig.c.erb +72 -0
  75. data/ext/nginx/config +4 -0
  76. data/ext/oxt/detail/tracable_exception_disabled.hpp +21 -1
  77. data/ext/oxt/detail/tracable_exception_enabled.hpp +4 -1
  78. data/ext/oxt/implementation.cpp +7 -1
  79. data/ext/oxt/macros.hpp +9 -7
  80. data/helper-scripts/backtrace-sanitizer.rb +23 -0
  81. data/helper-scripts/classic-rails-loader.rb +23 -0
  82. data/helper-scripts/classic-rails-preloader.rb +23 -0
  83. data/helper-scripts/download_binaries/extconf.rb +10 -5
  84. data/helper-scripts/meteor-loader.rb +127 -0
  85. data/helper-scripts/node-loader.js +1 -1
  86. data/helper-scripts/rack-preloader.rb +23 -0
  87. data/helper-scripts/system-memory-stats.py +22 -0
  88. data/helper-scripts/touch-dir.sh +48 -0
  89. data/lib/phusion_passenger.rb +1 -1
  90. data/lib/phusion_passenger/apache2/config_options.rb +104 -0
  91. data/lib/phusion_passenger/constants.rb +8 -0
  92. data/lib/phusion_passenger/native_support.rb +9 -1
  93. data/lib/phusion_passenger/nginx/config_options.rb +328 -0
  94. data/lib/phusion_passenger/packaging.rb +2 -2
  95. data/lib/phusion_passenger/platform_info/apache.rb +8 -0
  96. data/lib/phusion_passenger/platform_info/compiler.rb +2 -2
  97. data/lib/phusion_passenger/rails3_extensions/init.rb +19 -4
  98. data/lib/phusion_passenger/ruby_core_enhancements.rb +4 -1
  99. data/lib/phusion_passenger/standalone/app_finder.rb +3 -2
  100. data/lib/phusion_passenger/standalone/command.rb +1 -0
  101. data/lib/phusion_passenger/standalone/runtime_installer.rb +1 -6
  102. data/lib/phusion_passenger/standalone/runtime_locator.rb +9 -2
  103. data/lib/phusion_passenger/standalone/start_command.rb +45 -9
  104. data/lib/phusion_passenger/utils.rb +4 -1
  105. data/resources/templates/{nginx → installer_common}/run_installer_as_root.txt.erb +3 -1
  106. data/resources/templates/nginx/nginx_module_sources_not_available.txt.erb +6 -0
  107. data/resources/templates/standalone/config.erb +8 -8
  108. data/test/cxx/ApplicationPool2/PoolTest.cpp +120 -3
  109. data/test/cxx/RequestHandlerTest.cpp +66 -3
  110. data/test/integration_tests/native_packaging_spec.rb +41 -0
  111. data/test/integration_tests/nginx_tests.rb +1 -0
  112. data/test/integration_tests/standalone_tests.rb +4 -0
  113. data/test/ruby/shared/rails/analytics_logging_extensions_sharedspec.rb +22 -0
  114. data/test/stub/rails3.0/config/initializers/passenger.rb +2 -1
  115. data/test/stub/rails3.1/config/initializers/passenger.rb +2 -1
  116. data/test/stub/rails3.2/config/initializers/passenger.rb +2 -1
  117. data/test/stub/rails4.0/config/initializers/passenger.rb +5 -1
  118. data/test/stub/wsgi/passenger_wsgi.py +5 -0
  119. metadata +32 -7
  120. metadata.gz.asc +7 -7
  121. data/resources/templates/apache2/run_installer_as_root.txt.erb +0 -8
@@ -36,28 +36,10 @@ typedef struct {
36
36
  ngx_array_t *flushes;
37
37
  ngx_array_t *vars_len;
38
38
  ngx_array_t *vars;
39
- ngx_array_t *vars_source;
39
+ /** Raw SCGI header data for this location is cached here. */
40
+ ngx_str_t options_cache;
40
41
 
41
- ngx_flag_t enabled;
42
- ngx_flag_t friendly_error_pages;
43
- ngx_flag_t union_station_support;
44
- ngx_flag_t debugger;
45
- ngx_flag_t show_version_in_header;
46
- ngx_str_t ruby;
47
- ngx_str_t python;
48
- ngx_str_t environment;
49
- ngx_str_t user;
50
- ngx_str_t group;
51
- ngx_str_t spawn_method;
52
- ngx_str_t app_group_name;
53
- ngx_str_t app_root;
54
- ngx_str_t app_rights;
55
- ngx_int_t min_instances;
56
- ngx_int_t max_requests;
57
- ngx_int_t max_preloader_idle_time;
58
- ngx_str_t union_station_key;
59
- ngx_array_t *base_uris;
60
- ngx_array_t *union_station_filters;
42
+ #include "ConfigurationFields.h"
61
43
 
62
44
  #if (NGX_HTTP_CACHE)
63
45
  ngx_http_complex_value_t cache_key;
@@ -0,0 +1,501 @@
1
+ /*
2
+ * Phusion Passenger - https://www.phusionpassenger.com/
3
+ * Copyright (c) 2010-2013 Phusion
4
+ *
5
+ * "Phusion Passenger" is a trademark of Hongli Lai & Ninh Bui.
6
+ *
7
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
8
+ * of this software and associated documentation files (the "Software"), to deal
9
+ * in the Software without restriction, including without limitation the rights
10
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11
+ * copies of the Software, and to permit persons to whom the Software is
12
+ * furnished to do so, subject to the following conditions:
13
+ *
14
+ * The above copyright notice and this permission notice shall be included in
15
+ * all copies or substantial portions of the Software.
16
+ *
17
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
23
+ * THE SOFTWARE.
24
+ */
25
+
26
+ /*
27
+ * ConfigurationCommands.c is automatically generated from ConfigurationCommands.c.erb,
28
+ * using definitions from lib/phusion_passenger/nginx/config_options.rb.
29
+ * Edits to ConfigurationCommands.c will be lost.
30
+ *
31
+ * To update ConfigurationCommands.c:
32
+ * rake nginx
33
+ *
34
+ * To force regeneration of ConfigurationCommands.c:
35
+ * rm -f ext/nginx/ConfigurationCommands.c
36
+ * rake ext/nginx/ConfigurationCommands.c
37
+ */
38
+
39
+
40
+
41
+
42
+ {
43
+
44
+ ngx_string("passenger_enabled"),
45
+ NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LIF_CONF | NGX_CONF_FLAG,
46
+ passenger_enabled,
47
+ NGX_HTTP_LOC_CONF_OFFSET,
48
+ offsetof(passenger_loc_conf_t, enabled),
49
+ NULL
50
+ },
51
+
52
+ {
53
+
54
+ ngx_string("passenger_ruby"),
55
+ NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LIF_CONF | NGX_CONF_TAKE1,
56
+ ngx_conf_set_str_slot,
57
+ NGX_HTTP_LOC_CONF_OFFSET,
58
+ offsetof(passenger_loc_conf_t, ruby),
59
+ NULL
60
+ },
61
+
62
+ {
63
+
64
+ ngx_string("passenger_python"),
65
+ NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LIF_CONF | NGX_CONF_TAKE1,
66
+ ngx_conf_set_str_slot,
67
+ NGX_HTTP_LOC_CONF_OFFSET,
68
+ offsetof(passenger_loc_conf_t, python),
69
+ NULL
70
+ },
71
+
72
+ {
73
+
74
+ ngx_string("passenger_app_env"),
75
+ NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LIF_CONF | NGX_CONF_TAKE1,
76
+ ngx_conf_set_str_slot,
77
+ NGX_HTTP_LOC_CONF_OFFSET,
78
+ offsetof(passenger_loc_conf_t, environment),
79
+ NULL
80
+ },
81
+
82
+ {
83
+
84
+ ngx_string("passenger_friendly_error_pages"),
85
+ NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LIF_CONF | NGX_CONF_FLAG,
86
+ ngx_conf_set_flag_slot,
87
+ NGX_HTTP_LOC_CONF_OFFSET,
88
+ offsetof(passenger_loc_conf_t, friendly_error_pages),
89
+ NULL
90
+ },
91
+
92
+ {
93
+
94
+ ngx_string("passenger_min_instances"),
95
+ NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LIF_CONF | NGX_CONF_TAKE1,
96
+ ngx_conf_set_num_slot,
97
+ NGX_HTTP_LOC_CONF_OFFSET,
98
+ offsetof(passenger_loc_conf_t, min_instances),
99
+ NULL
100
+ },
101
+
102
+ {
103
+
104
+ ngx_string("passenger_max_requests"),
105
+ NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LIF_CONF | NGX_CONF_TAKE1,
106
+ ngx_conf_set_num_slot,
107
+ NGX_HTTP_LOC_CONF_OFFSET,
108
+ offsetof(passenger_loc_conf_t, max_requests),
109
+ NULL
110
+ },
111
+
112
+ {
113
+
114
+ ngx_string("passenger_start_timeout"),
115
+ NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LIF_CONF | NGX_CONF_TAKE1,
116
+ ngx_conf_set_num_slot,
117
+ NGX_HTTP_LOC_CONF_OFFSET,
118
+ offsetof(passenger_loc_conf_t, start_timeout),
119
+ NULL
120
+ },
121
+
122
+ {
123
+
124
+ ngx_string("passenger_base_uri"),
125
+ NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LIF_CONF | NGX_CONF_TAKE1,
126
+ ngx_conf_set_str_array_slot,
127
+ NGX_HTTP_LOC_CONF_OFFSET,
128
+ offsetof(passenger_loc_conf_t, base_uris),
129
+ NULL
130
+ },
131
+
132
+ {
133
+
134
+ ngx_string("passenger_user"),
135
+ NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LIF_CONF | NGX_CONF_TAKE1,
136
+ ngx_conf_set_str_slot,
137
+ NGX_HTTP_LOC_CONF_OFFSET,
138
+ offsetof(passenger_loc_conf_t, user),
139
+ NULL
140
+ },
141
+
142
+ {
143
+
144
+ ngx_string("passenger_group"),
145
+ NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LIF_CONF | NGX_CONF_TAKE1,
146
+ ngx_conf_set_str_slot,
147
+ NGX_HTTP_LOC_CONF_OFFSET,
148
+ offsetof(passenger_loc_conf_t, group),
149
+ NULL
150
+ },
151
+
152
+ {
153
+
154
+ ngx_string("passenger_app_group_name"),
155
+ NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LIF_CONF | NGX_CONF_TAKE1,
156
+ ngx_conf_set_str_slot,
157
+ NGX_HTTP_LOC_CONF_OFFSET,
158
+ offsetof(passenger_loc_conf_t, app_group_name),
159
+ NULL
160
+ },
161
+
162
+ {
163
+
164
+ ngx_string("passenger_app_root"),
165
+ NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LIF_CONF | NGX_CONF_TAKE1,
166
+ ngx_conf_set_str_slot,
167
+ NGX_HTTP_LOC_CONF_OFFSET,
168
+ offsetof(passenger_loc_conf_t, app_root),
169
+ NULL
170
+ },
171
+
172
+ {
173
+
174
+ ngx_string("passenger_app_rights"),
175
+ NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LIF_CONF | NGX_CONF_TAKE1,
176
+ ngx_conf_set_str_slot,
177
+ NGX_HTTP_LOC_CONF_OFFSET,
178
+ offsetof(passenger_loc_conf_t, app_rights),
179
+ NULL
180
+ },
181
+
182
+ {
183
+
184
+ ngx_string("union_station_support"),
185
+ NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LIF_CONF | NGX_CONF_FLAG,
186
+ ngx_conf_set_flag_slot,
187
+ NGX_HTTP_LOC_CONF_OFFSET,
188
+ offsetof(passenger_loc_conf_t, union_station_support),
189
+ NULL
190
+ },
191
+
192
+ {
193
+
194
+ ngx_string("union_station_filter"),
195
+ NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LIF_CONF | NGX_CONF_TAKE1,
196
+ union_station_filter,
197
+ NGX_HTTP_LOC_CONF_OFFSET,
198
+ offsetof(passenger_loc_conf_t, union_station_filters),
199
+ NULL
200
+ },
201
+
202
+ {
203
+
204
+ ngx_string("passenger_debugger"),
205
+ NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LIF_CONF | NGX_CONF_FLAG,
206
+ ngx_conf_set_flag_slot,
207
+ NGX_HTTP_LOC_CONF_OFFSET,
208
+ offsetof(passenger_loc_conf_t, debugger),
209
+ NULL
210
+ },
211
+
212
+ {
213
+
214
+ ngx_string("passenger_show_version_in_header"),
215
+ NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LIF_CONF | NGX_CONF_FLAG,
216
+ ngx_conf_set_flag_slot,
217
+ NGX_HTTP_LOC_CONF_OFFSET,
218
+ offsetof(passenger_loc_conf_t, show_version_in_header),
219
+ NULL
220
+ },
221
+
222
+ {
223
+
224
+ ngx_string("passenger_max_preloader_idle_time"),
225
+ NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LIF_CONF | NGX_CONF_TAKE1,
226
+ ngx_conf_set_num_slot,
227
+ NGX_HTTP_LOC_CONF_OFFSET,
228
+ offsetof(passenger_loc_conf_t, max_preloader_idle_time),
229
+ NULL
230
+ },
231
+
232
+ {
233
+
234
+ ngx_string("passenger_ignore_headers"),
235
+ NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LIF_CONF | NGX_CONF_1MORE,
236
+ ngx_conf_set_bitmask_slot,
237
+ NGX_HTTP_LOC_CONF_OFFSET,
238
+ offsetof(passenger_loc_conf_t, upstream_config.ignore_headers),
239
+ NULL
240
+ },
241
+
242
+ {
243
+
244
+ ngx_string("passenger_set_cgi_param"),
245
+ NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LIF_CONF | NGX_CONF_TAKE2,
246
+ set_null_terminated_keyval_slot,
247
+ NGX_HTTP_LOC_CONF_OFFSET,
248
+ offsetof(passenger_loc_conf_t, vars_source),
249
+ NULL
250
+ },
251
+
252
+ {
253
+
254
+ ngx_string("passenger_pass_header"),
255
+ NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LIF_CONF | NGX_CONF_TAKE1,
256
+ ngx_conf_set_str_array_slot,
257
+ NGX_HTTP_LOC_CONF_OFFSET,
258
+ offsetof(passenger_loc_conf_t, upstream_config.pass_headers),
259
+ NULL
260
+ },
261
+
262
+ {
263
+
264
+ ngx_string("passenger_ignore_client_abort"),
265
+ NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LIF_CONF | NGX_CONF_FLAG,
266
+ ngx_conf_set_flag_slot,
267
+ NGX_HTTP_LOC_CONF_OFFSET,
268
+ offsetof(passenger_loc_conf_t, upstream_config.ignore_client_abort),
269
+ NULL
270
+ },
271
+
272
+ {
273
+
274
+ ngx_string("passenger_buffer_response"),
275
+ NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LIF_CONF | NGX_CONF_FLAG,
276
+ ngx_conf_set_flag_slot,
277
+ NGX_HTTP_LOC_CONF_OFFSET,
278
+ offsetof(passenger_loc_conf_t, upstream_config.buffering),
279
+ NULL
280
+ },
281
+
282
+ {
283
+
284
+ ngx_string("passenger_buffer_size"),
285
+ NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LIF_CONF | NGX_CONF_TAKE1,
286
+ ngx_conf_set_size_slot,
287
+ NGX_HTTP_LOC_CONF_OFFSET,
288
+ offsetof(passenger_loc_conf_t, upstream_config.buffer_size),
289
+ NULL
290
+ },
291
+
292
+ {
293
+
294
+ ngx_string("passenger_buffers"),
295
+ NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LIF_CONF | NGX_CONF_TAKE2,
296
+ ngx_conf_set_bufs_slot,
297
+ NGX_HTTP_LOC_CONF_OFFSET,
298
+ offsetof(passenger_loc_conf_t, upstream_config.bufs),
299
+ NULL
300
+ },
301
+
302
+ {
303
+
304
+ ngx_string("passenger_busy_buffers_size"),
305
+ NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LIF_CONF | NGX_CONF_TAKE1,
306
+ ngx_conf_set_size_slot,
307
+ NGX_HTTP_LOC_CONF_OFFSET,
308
+ offsetof(passenger_loc_conf_t, upstream_config.busy_buffers_size_conf),
309
+ NULL
310
+ },
311
+
312
+ {
313
+
314
+ ngx_string("passenger_intercept_errors"),
315
+ NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LIF_CONF | NGX_CONF_FLAG,
316
+ ngx_conf_set_flag_slot,
317
+ NGX_HTTP_LOC_CONF_OFFSET,
318
+ offsetof(passenger_loc_conf_t, upstream_config.intercept_errors),
319
+ NULL
320
+ },
321
+
322
+ {
323
+
324
+ ngx_string("passenger_spawn_method"),
325
+ NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LIF_CONF | NGX_CONF_TAKE1,
326
+ ngx_conf_set_str_slot,
327
+ NGX_HTTP_LOC_CONF_OFFSET,
328
+ offsetof(passenger_loc_conf_t, spawn_method),
329
+ NULL
330
+ },
331
+
332
+ {
333
+
334
+ ngx_string("union_station_key"),
335
+ NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LIF_CONF | NGX_CONF_TAKE1,
336
+ ngx_conf_set_str_slot,
337
+ NGX_HTTP_LOC_CONF_OFFSET,
338
+ offsetof(passenger_loc_conf_t, union_station_key),
339
+ NULL
340
+ },
341
+
342
+ {
343
+
344
+ ngx_string("passenger_max_request_queue_size"),
345
+ NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LIF_CONF | NGX_CONF_TAKE1,
346
+ ngx_conf_set_num_slot,
347
+ NGX_HTTP_LOC_CONF_OFFSET,
348
+ offsetof(passenger_loc_conf_t, max_request_queue_size),
349
+ NULL
350
+ },
351
+
352
+ {
353
+
354
+ ngx_string("passenger_request_queue_overflow_status_code"),
355
+ NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LIF_CONF | NGX_CONF_TAKE1,
356
+ ngx_conf_set_num_slot,
357
+ NGX_HTTP_LOC_CONF_OFFSET,
358
+ offsetof(passenger_loc_conf_t, request_queue_overflow_status_code),
359
+ NULL
360
+ },
361
+
362
+ {
363
+
364
+ ngx_string("passenger_fly_with"),
365
+ NGX_HTTP_MAIN_CONF | NGX_CONF_TAKE1,
366
+ passenger_enterprise_only,
367
+ NGX_HTTP_MAIN_CONF_OFFSET,
368
+ 0,
369
+ NULL
370
+ },
371
+
372
+ {
373
+
374
+ ngx_string("passenger_max_instances"),
375
+ NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LIF_CONF | NGX_CONF_TAKE1,
376
+ passenger_enterprise_only,
377
+ NGX_HTTP_LOC_CONF_OFFSET,
378
+ 0,
379
+ NULL
380
+ },
381
+
382
+ {
383
+
384
+ ngx_string("passenger_max_request_time"),
385
+ NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LIF_CONF | NGX_CONF_TAKE1,
386
+ passenger_enterprise_only,
387
+ NGX_HTTP_LOC_CONF_OFFSET,
388
+ 0,
389
+ NULL
390
+ },
391
+
392
+ {
393
+
394
+ ngx_string("passenger_memory_limit"),
395
+ NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LIF_CONF | NGX_CONF_TAKE1,
396
+ passenger_enterprise_only,
397
+ NGX_HTTP_LOC_CONF_OFFSET,
398
+ 0,
399
+ NULL
400
+ },
401
+
402
+ {
403
+
404
+ ngx_string("passenger_concurrency_model"),
405
+ NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LIF_CONF | NGX_CONF_TAKE1,
406
+ passenger_enterprise_only,
407
+ NGX_HTTP_LOC_CONF_OFFSET,
408
+ 0,
409
+ NULL
410
+ },
411
+
412
+ {
413
+
414
+ ngx_string("passenger_thread_count"),
415
+ NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LIF_CONF | NGX_CONF_TAKE1,
416
+ passenger_enterprise_only,
417
+ NGX_HTTP_LOC_CONF_OFFSET,
418
+ 0,
419
+ NULL
420
+ },
421
+
422
+ {
423
+
424
+ ngx_string("passenger_rolling_restarts"),
425
+ NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LIF_CONF | NGX_CONF_FLAG,
426
+ passenger_enterprise_only,
427
+ NGX_HTTP_LOC_CONF_OFFSET,
428
+ 0,
429
+ NULL
430
+ },
431
+
432
+ {
433
+
434
+ ngx_string("passenger_resist_deployment_errors"),
435
+ NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LIF_CONF | NGX_CONF_FLAG,
436
+ passenger_enterprise_only,
437
+ NGX_HTTP_LOC_CONF_OFFSET,
438
+ 0,
439
+ NULL
440
+ },
441
+
442
+ {
443
+
444
+ ngx_string("rails_spawn_method"),
445
+ NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LIF_CONF | NGX_CONF_TAKE1,
446
+ ngx_conf_set_str_slot,
447
+ NGX_HTTP_LOC_CONF_OFFSET,
448
+ offsetof(passenger_loc_conf_t, spawn_method),
449
+ NULL
450
+ },
451
+
452
+ {
453
+
454
+ ngx_string("rails_env"),
455
+ NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LIF_CONF | NGX_CONF_TAKE1,
456
+ ngx_conf_set_str_slot,
457
+ NGX_HTTP_LOC_CONF_OFFSET,
458
+ offsetof(passenger_loc_conf_t, environment),
459
+ NULL
460
+ },
461
+
462
+ {
463
+
464
+ ngx_string("rack_env"),
465
+ NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LIF_CONF | NGX_CONF_TAKE1,
466
+ ngx_conf_set_str_slot,
467
+ NGX_HTTP_LOC_CONF_OFFSET,
468
+ offsetof(passenger_loc_conf_t, environment),
469
+ NULL
470
+ },
471
+
472
+ {
473
+
474
+ ngx_string("rails_app_spawner_idle_time"),
475
+ NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LIF_CONF | NGX_CONF_TAKE1,
476
+ ngx_conf_set_num_slot,
477
+ NGX_HTTP_LOC_CONF_OFFSET,
478
+ offsetof(passenger_loc_conf_t, max_preloader_idle_time),
479
+ NULL
480
+ },
481
+
482
+ {
483
+
484
+ ngx_string("rails_framework_spawner_idle_time"),
485
+ NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LIF_CONF | NGX_CONF_TAKE1,
486
+ rails_framework_spawner_idle_time,
487
+ NGX_HTTP_LOC_CONF_OFFSET,
488
+ 0,
489
+ NULL
490
+ },
491
+
492
+ {
493
+
494
+ ngx_string("passenger_use_global_queue"),
495
+ NGX_HTTP_MAIN_CONF | NGX_HTTP_SRV_CONF | NGX_HTTP_LOC_CONF | NGX_HTTP_LIF_CONF | NGX_CONF_FLAG,
496
+ passenger_use_global_queue,
497
+ NGX_HTTP_LOC_CONF_OFFSET,
498
+ 0,
499
+ NULL
500
+ },
501
+