Nginx and Server Side Includes
Frederic Cambus September 21, 2014 [Nginx]Server Side Includes are an interesting way to embed content dynamically into static files. It can be particularly useful to inject information about the visitor or to add headers, footers or any file containing data changing over time.
Please note, however, that Nginx does not implement the full SSI specification yet. More information about what is currently supported can be found in the ngx_http_ssi_module documentation.
To enable SSI, the following directive must be added in the http
, server
or location
block:
ssi on;
Here is an example HTML snippet with SSI directives, showing how to echo variables and include content from other files:
<h2>Visitor information</h2>
<p>Visitor IP address: <!--#echo var="REMOTE_ADDR" --></p>
<p>Visitor User agent: <!--#echo var="HTTP_USER_AGENT" --></p>
<h2>Server information</h2>
<p>Server local time: <!--#echo var="DATE_LOCAL" --></p>
<p>Server time (GMT): <!--#echo var="DATE_GMT" --></p>
<p>Server uptime (refreshed every minute): <!--#include file="uptime.txt" --></p>
<h2>Fortune of the day</h2>
<pre>
<!--#include file="fortune.txt" -->
</pre>
In order to populate fortune.txt
and uptime.txt
, we can use Cron and refresh files content as required. For even more fun, we can also use cowsay
together with fortune
.
Let's add the following entries to the Crontab:
* * * * * uptime > /path/to/htdocs/uptime.txt
0 0 * * * /usr/games/fortune | /usr/games/cowsay -f tux > /path/to/htdocs/fortune.txt
Finally, here is the resulting output when accessing the page using Lynx:
Visitor information
Visitor IP address: 175.45.176.1
Visitor User agent: Lynx/2.8.8rel.2 libwww-FM/2.14 SSL-MM/1.4.1 OpenSSL/1.0.1h
Server information
Server local time: Sunday, 21-Sep-2014 18:55:49 CEST
Server time (GMT): Sunday, 21-Sep-2014 16:55:49 GMT
Server uptime: 18:55:01 up 52 days, 7:50, 3 users, load average: 0.13, 0.19, 0.22
Fortune of the day
________________________________________
/ In most countries selling harmful \
| things like drugs is punishable. Then |
| howcome people can sell Microsoft |
| software and go unpunished? |
| |
\ -- Hasse Skrifvars, hasku@rost.abo.fi, /
----------------------------------------
\
\
.--.
|o_o |
|:_/ |
// \ \
(| | )
/'\_ _/`\
\___)=(___/