[Patch] add -p option to override prefix

Jérôme Loyet jerome at loyet.net
Thu Mar 26 00:55:50 MSK 2009


the previous patch (nginx-prefix-v2.patch) has to be applied after the
first one.

I attach here the full patch.

++ jerome

Le 25 mars 2009 21:16, Jérôme Loyet <jerome at loyet.net> a écrit :
> 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-full-v2.patch
Type: application/octet-stream
Size: 16129 bytes
Desc: not available
URL: <http://nginx.org/pipermail/nginx/attachments/20090325/ec1c145a/attachment.obj>


More information about the nginx mailing list