Emulate SSI 'exec cmd' with nginx

Maxim Dounin mdounin at mdounin.ru
Tue Apr 23 14:23:14 UTC 2013


Hello!

On Mon, Apr 22, 2013 at 06:45:55PM -0400, lpr wrote:

> Dear all
> 
> Trying to move my pages from Apache to nginx (1.2.1 on Debian stable with
> backports), I run into the problem of having used SSI's 'exec cmd' for more
> than a decade quite intensively.
> 
> What is the best and easiest way to emulate 'exec cmd' with nginx?
> 
> For example, in my footers I make use of dynamically change between ENglish
> and GErman with a shell script as easy as
> 
> <!--# exec cmd="setlanguage.sh" -->
> 
> with setlanguage.sh as
> 
> echo "<a href=\"$(echo $REQUEST_URI | sed -e 's:/EN/:/GE/:')\">Deutsch</a>"
> 
> When I try using <!--# include virtual="setlanguage.sh" -->, the script is
> executed.  However, instead of just adding the link, nginx includes the
> German web-page fully.
> 
> Is there an easy way to get the same functionality with nginx?

There is no "exec" SSI command support in nginx.

In this particular case I would recommend using if with regular 
expression and echo commands instead.  Something like this should 
work:

<!--# if expr="$request_uri = /(?P<foo>.+)/EN/(?P<bar>.+)" -->
<a href="<!--# echo var="foo" -->/GE/<!--# echo var="bar" -->">Deutsch</a>
<!--# endif -->

(Untested.)

-- 
Maxim Dounin
http://nginx.org/en/donation.html



More information about the nginx mailing list