[Patch] add -p option to override prefix

Jérôme Loyet jerome at loyet.net
Wed Mar 25 23:16:14 MSK 2009


2009/3/25 Igor Sysoev <is at rambler-co.ru>:
> On Tue, Mar 24, 2009 at 04:46:03PM +0100, J?r?me Loyet wrote:
>
>> I attach a patch which add the -p option to nginx. This option
>> overrides the --prefix path and also the $NGX_CONF_PREFIX variable
>> which is used as prefix for "include" directives. So, all relative
>> path will be prefix with the value of this option.
>>
>> I don't know if it covers all cases but it seems ok in my env.
>>
>> Why did I want to make such a patch ?
>> Because i'll be running several instances of nginx on the same box,
>> with similar conf and similar directorys (/path/xx/conf,
>> /path/xx/docs, /path/xx/logs, /path/xx/cache, /path/xx/tmp, ...). With
>> same conf, I can launch multiple instances of nginx with
>> /path/to/nginx -p /path/www, -p /patch/www2, ...
>>
>> I could run one instance of nginx with many "server" directives but
>> the box is mutualized between clients and clients doesn't want to
>> share their instance with others ...
>>
>> You could then imagine many cases in which this option could be usefull.
>
> I need to see how -p will affect on directives that use conf prefix
> such as "include", "ssl_certficate*", and "auth_basic_user_file".
> Historically, nginx had the single prefix (not conf one), but this was
> uncomfortably for Linux packages, where now the conf prefix is /etc/nginx,
> while default prefix is somewhere in other place.
>

I made a new version of my patch. The patch still add the -p prefix but:
1- in auto/options, I've set the following variables:
+NGX_PREFIX_CONF_PATH=conf/nginx.conf
+NGX_PREFIX_ERROR_LOG_PATH=logs/error.log
+NGX_PREFIX_PID_PATH=logs/nginx.pid
+NGX_PREFIX_LOCK_PATH=logs/nginx.lock
+NGX_PREFIX_HTTP_CLIENT_TEMP_PATH=client_body_temp
+NGX_PREFIX_HTTP_PROXY_TEMP_PATH=proxy_temp
+NGX_PREFIX_HTTP_FASTCGI_TEMP_PATH=proxy_temp
+NGX_PREFIX_HTTP_LOG_PATH=logs/access.log

2- in auto/options I use them in remplacement of RAW string, for exemple:
-        NGX_CONF_PATH=$NGX_PREFIX/conf/nginx.conf
+        NGX_CONF_PATH=$NGX_PREFIX/$NGX_PREFIX_CONF_PATH

3- 1) and 2) change nothing, except that default relative paths are in
variable now
4- In configure, I export those variables
5- in each source file in which one of thoses defined variable are
used, I changed it to
5a- if -p was not specified at runtime, nothing change. Use
NGX_PID_PATH and NGX_PREFIX_PID_PATH is not used at all.
5b- if -p was specified at runtime, so don't use NGX_PID_PATH but "-p
parameter"/NGX_PREFIX_PID_PATH
6- If the -p parameter doesn't finish with a '/' char, then add it (I
didn't take care of windows path yet)

I tried to make this patch clear and correct. It seams to work. But I
didn't have time to test many features like ("ssl_certficate*", and
"auth_basic_user_file). I'll try that tonight or tomorow.

Hope this help.

++ Jerome
-------------- next part --------------
A non-text attachment was scrubbed...
Name: nginx-prefix-v2.patch
Type: application/octet-stream
Size: 14699 bytes
Desc: not available
URL: <http://nginx.org/pipermail/nginx/attachments/20090325/ae529177/attachment.obj>


More information about the nginx mailing list