<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="https://uname.pingveno.net/blog/index.php/feed/rss2/xslt" ?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title># uname -a - Mot-clé - fastcgi</title>
    <link>https://uname.pingveno.net/blog/index.php/</link>
    <atom:link href="https://uname.pingveno.net/blog/index.php/feed/tag/fastcgi/rss2" rel="self" type="application/rss+xml" />
    <description>Le blog de uname.pingveno.net</description>
    <language>fr</language>
    <pubDate>Sun, 17 May 2026 16:16:57 +0200</pubDate>
    <copyright>Mathieu Pellegrin</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>Dotclear</generator>
          <item>
        <title>Conflict between broken Apache packages makes FCGI angry (mod_fcgid: can't lock process table)</title>
        <link>https://uname.pingveno.net/blog/index.php/post/2014/02/08/Conflict-between-broken-Apache-packages-makes-FCGI-angry-%28mod_fcgid%3A-can-t-lock-process-table%29</link>
        <guid isPermaLink="false">urn:md5:d9a590ab25d996c14c0fb0f8f7c883e9</guid>
        <pubDate>Sat, 08 Feb 2014 17:37:00 +0100</pubDate>
        <dc:creator>Mathieu</dc:creator>
                  <category>Hacks</category>
                          <category>apache</category>
                  <category>apache-itk</category>
                  <category>apache-workers</category>
                  <category>debian</category>
                  <category>fastcgi</category>
                  <category>puppet</category>
                  <category>suexec</category>
                  <category>wheezy</category>
                <description>          &lt;p&gt;Here is is a quick note on the fix I made today for a messed up Apache server.&lt;/p&gt;
&lt;h3&gt;The environment&lt;/h3&gt;
&lt;p&gt;Apache2 + Debian + mod_suexec + mod_fcgi&lt;/p&gt;
&lt;h3&gt;The problem&lt;/h3&gt;
&lt;p&gt;The server was down only for PHP-running websites. It triggered a connexion reset when trying to run PHP scripts. Static content and reverse proxies were working correctly, as if nothing was happening.&lt;/p&gt;
&lt;p&gt;In the server logs, the following error was present&amp;#160;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;code&gt;mod_fcgid: can't lock process table &lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The suexec log was showing no anomaly.&lt;/p&gt;
&lt;p&gt;The server wasn&amp;#8217;t gracefully stopping anymore, and I had to kill him with the &lt;code&gt;-9&lt;/code&gt; signal to stop it.&lt;/p&gt;
&lt;h3&gt;The cause&lt;/h3&gt;
&lt;p&gt;Searching around the web was giving me very few clues on the problem. I couldn&amp;#8217;t find why the CGI subprocess was broken, it is spawned by Apache and so it should not be missing permissions (there is no CGI daemon listening in Apache setup, &lt;a href=&quot;https://uname.pingveno.net/blog/index.php/post/2013/08/25/Configure-Munin-graphs-with-Nginx-and-Debian-7&quot;&gt;contrary to Nginx&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;What causes the Apache subprocesses to get spawned&amp;#160;? Either the Apache &lt;code&gt;mpm-workers&lt;/code&gt;, or &lt;code&gt;mpm-prefork&lt;/code&gt;, or &lt;code&gt;mpm-event&lt;/code&gt; or &lt;code&gt;mpm-itk&lt;/code&gt;. I knew I was using &lt;code&gt;workers&lt;/code&gt;, but a glance in APT installed packages showed me broken packages on &lt;code&gt;workers&lt;/code&gt; and &lt;code&gt;ITK&lt;/code&gt;. Wait&amp;#8230; &lt;code&gt;ITK&lt;/code&gt;&amp;#160;?&lt;/p&gt;
&lt;p&gt;Actually, I run Puppet, and Puppet was configured to keep Apache ot its latest version from repositories. With the release of a newer version of Apache, it had updated the &lt;code&gt;apache2&lt;/code&gt; package &amp;#8230; and installed &lt;code&gt;apache2-mpm-itk&lt;/code&gt; while &lt;code&gt;apache2-mpm-workers&lt;/code&gt; was still present&amp;#160;!&lt;/p&gt;
&lt;p&gt;The result was a conflict while trying to spawn CGI processes, and a crash of the subprocess.&lt;/p&gt;
&lt;h3&gt;The fix&lt;/h3&gt;
&lt;p&gt;Doing a &lt;code&gt;remove apache2-mpm-itk&lt;/code&gt;, and &lt;code&gt;force-reinstall apache2-mpm-workers&lt;/code&gt; did the job.&lt;/p&gt;</description>
        
              </item>
          <item>
        <title>Configure Munin graphs with Nginx, FastCGI, and Debian 7</title>
        <link>https://uname.pingveno.net/blog/index.php/post/2013/08/25/Configure-Munin-graphs-with-Nginx-and-Debian-7</link>
        <guid isPermaLink="false">urn:md5:d14a00a2d515953f6b51a757207912d8</guid>
        <pubDate>Sun, 25 Aug 2013 11:40:00 +0200</pubDate>
        <dc:creator>Mathieu</dc:creator>
                  <category>Informatique</category>
                          <category>debian</category>
                  <category>fastcgi</category>
                  <category>munin</category>
                  <category>nginx</category>
                  <category>server</category>
                  <category>wheezy</category>
                <description>&lt;p&gt;Setting up Munin with Nginx can be a little harsh. Here is the ready-to-go solution for Debian Wheezy.&lt;/p&gt;          &lt;p&gt;I will make the assumption that you have already configured Munin and Munin-node. I also assume that you didn&amp;#8217;t change the CGI and CRON params in the Munin default configuration provided by the Debian package.&lt;/p&gt;

&lt;h3&gt;Abstract&lt;/h3&gt;

&lt;ul&gt;
	&lt;li&gt;
	&lt;p&gt;In the default configuration, the HTML files for Munin graphes are generated by Cron, and are stored in &lt;code&gt;/var/cache/munin/www/&lt;/code&gt;&lt;/p&gt;
	&lt;/li&gt;
	&lt;li&gt;
	&lt;p&gt;To display Munin graphs, you have to call the &lt;code&gt;munin-cgi-graph&lt;/code&gt; program located in &lt;code&gt;/usr/lib/munin/cgi/&lt;/code&gt;&lt;/p&gt;
	&lt;/li&gt;
	&lt;li&gt;
	&lt;p&gt;To display Munin extra HTML, you have to call the &lt;code&gt;munin-cgi-html&lt;/code&gt; program located in &lt;code&gt;/usr/lib/munin/cgi/&lt;/code&gt;&lt;/p&gt;
	&lt;/li&gt;
	&lt;li&gt;
	&lt;p&gt;The configuration I use is an adapted version of Apache configuration delivered with the Debian package at &lt;code&gt;/etc/munin/apache2.conf&lt;/code&gt;.&lt;/p&gt;
	&lt;/li&gt;
	&lt;li&gt;
	&lt;p&gt;Unlike Apache, Nginx does not spawn CGI processes, you will have to make a startup script to create the appropriate sockets.&lt;/p&gt;
	&lt;/li&gt;
	&lt;li&gt;
	&lt;p&gt;The spawned sockets run with the munin user, you will have to chown some logfiles and change logrotate configuration.&lt;/p&gt;
	&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Installation&lt;/h3&gt;

&lt;p&gt;Let&amp;#8217;s start with a basic Ningx installation&amp;#160;: &lt;code&gt;apt-get install nginx&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Next, add &lt;code&gt;fcgiwrap&lt;/code&gt;, the Ningx CGI wrapper&amp;#160;: &lt;code&gt;apt-get install fcgiwrap&lt;/code&gt;. Note that in the dependencies, you have &lt;code&gt;spawn-fcgi&lt;/code&gt;. we will use it to create the CGI sockets.&lt;/p&gt;

&lt;h3&gt;The CGI sockets&lt;/h3&gt;

&lt;p&gt;To spawn the &lt;code&gt;munin-cgi-graph&lt;/code&gt; and &lt;code&gt;munin-cgi-html&lt;/code&gt; processes, create a startup script at &lt;code&gt;/etc/init.d/munin-fastcgi&lt;/code&gt;&amp;#160;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;#! /bin/sh&lt;br /&gt;
### BEGIN INIT INFO&lt;br /&gt;
# Provides:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; munin-fastcgi&lt;br /&gt;
# Required-Start:&amp;nbsp;&amp;nbsp;&amp;nbsp; $remote_fs $network&lt;br /&gt;
# Required-Stop:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $remote_fs $network&lt;br /&gt;
# Default-Start:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2 3 4 5&lt;br /&gt;
# Default-Stop:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 1 6&lt;br /&gt;
# Short-Description: starts munin-fastcgi&lt;br /&gt;
# Description:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Spawn Munin FCGI sockets for Web access&lt;br /&gt;
### END INIT INFO&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# munin-fastcgi&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Startup script for Munin CGI services&lt;br /&gt;
#&lt;br /&gt;
# chkconfig: - 84 15&lt;br /&gt;
# description: Loading Munin CGI services using spawn-cgi&lt;br /&gt;
#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HTML files and CGI.&lt;br /&gt;
#&lt;br /&gt;
# Author:&amp;nbsp; Ryan Norbauer &amp;lt;ryan.norbauer@gmail.com&amp;gt;&lt;br /&gt;
# Modified:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Geoffrey Grosenbach http://topfunky.com&lt;br /&gt;
# Modified:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; David Krmpotic http://davidhq.com&lt;br /&gt;
# Modified:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Kun Xi http://kunxi.org&lt;br /&gt;
# Modified:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; http://drumcoder.co.uk/&lt;br /&gt;
# Modified:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; http://uname.pingveno.net/&lt;br /&gt;
&lt;br /&gt;
DAEMON=/usr/bin/spawn-fcgi&lt;br /&gt;
FCGI_GRAPH_SOCK=/var/run/munin/fastcgi-munin-graph.sock&lt;br /&gt;
FCGI_HTML_SOCK=/var/run/munin/fastcgi-munin-html.sock&lt;br /&gt;
WWW_USER=www-data&lt;br /&gt;
FCGI_USER=munin&lt;br /&gt;
FCGI_GROUP=munin&lt;br /&gt;
FCGI_SPAWN_GRAPH=/usr/lib/munin/cgi/munin-cgi-graph&lt;br /&gt;
FCGI_SPAWN_HTML=/usr/lib/munin/cgi/munin-cgi-html&lt;br /&gt;
PIDFILE_GRAPH=/var/run/munin/fastcgi-munin-graph.pid&lt;br /&gt;
PIDFILE_HTML=/var/run/munin/fastcgi-munin-html.pid&lt;br /&gt;
DESC=&quot;Munin FCGI for Graph an HTML&quot;&lt;br /&gt;
&lt;br /&gt;
# Gracefully exit if the package has been removed.&lt;br /&gt;
test -x $DAEMON || exit 0&lt;br /&gt;
test -x $FCGI_SPAWN_GRAPH || exit 0&lt;br /&gt;
test -x $FCGI_SPAWN_HTML || exit 0&lt;br /&gt;
&lt;br /&gt;
start() {&lt;br /&gt;
&amp;nbsp; $DAEMON -s $FCGI_GRAPH_SOCK -U $WWW_USER -u $FCGI_USER -g $FCGI_GROUP -P $PIDFILE_GRAPH $FCGI_SPAWN_GRAPH 2&amp;gt; /dev/null || echo &quot;Graph Already running&quot;&lt;br /&gt;
&amp;nbsp; $DAEMON -s $FCGI_HTML_SOCK -U $WWW_USER -u $FCGI_USER -g $FCGI_GROUP -P $PIDFILE_HTML $FCGI_SPAWN_HTML 2&amp;gt; /dev/null || echo &quot;HTML Already running&quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
stop() {&lt;br /&gt;
&amp;nbsp; kill -QUIT `cat $PIDFILE_GRAPH` || echo &quot;Graph not running&quot;&lt;br /&gt;
&amp;nbsp; kill -QUIT `cat $PIDFILE_HTML` || echo &quot;HTML Not running&quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
restart() {&lt;br /&gt;
&amp;nbsp; kill -HUP `cat $PIDFILE_GRAPH` || echo &quot;Can't reload Graph&quot;&lt;br /&gt;
&amp;nbsp; kill -HUP `cat $PIDFILE_HTML` || echo &quot;Can't reload HTML&quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
case &quot;$1&quot; in&lt;br /&gt;
&amp;nbsp; start)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; echo &quot;Starting $DESC: &quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; start&lt;br /&gt;
&amp;nbsp; ;;&lt;br /&gt;
&amp;nbsp; stop)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; echo &quot;Stopping $DESC: &quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; stop&lt;br /&gt;
&amp;nbsp; ;;&lt;br /&gt;
&amp;nbsp; restart|reload)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; echo &quot;Restarting $DESC: &quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; stop&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; # One second might not be time enough for a daemon to stop,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; # if this happens, d_start will fail (and dpkg will break if&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; # the package is being upgraded). Change the timeout if needed&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; # be, or change d_stop to have start-stop-daemon use --retry.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; # Notice that using --retry slows down the shutdown process somewhat.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; sleep 1&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; start&lt;br /&gt;
&amp;nbsp; ;;&lt;br /&gt;
&amp;nbsp; *)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; echo &quot;Usage: $SCRIPTNAME {start|stop|restart|reload}&quot; &amp;gt;&amp;amp;2&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; exit 3&lt;br /&gt;
&amp;nbsp; ;;&lt;br /&gt;
esac&lt;br /&gt;
&lt;br /&gt;
exit $?&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Don&amp;#8217;t forget to set it executable&amp;#160;: &lt;code&gt;chmod +x /etc/init.d/munin-fastcgi&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Finally, add your startup script to runlevels&amp;#160;: &lt;code&gt;update-rc.d munin-fastcgi defaults&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;And start it&amp;#160;: &lt;code&gt;service munin-fastcgi start&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;Fix for log files&lt;/h3&gt;

&lt;p&gt;The log files are owned by &lt;code&gt;www-data&lt;/code&gt; user. In our configuration, the CGI process is run by &lt;code&gt;munin&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Change the owner of logfiles&amp;#160;: &lt;code&gt;chown munin /var/log/munin/munin-cgi-graph.log &amp;amp;&amp;amp; chown munin /var/log/munin/munin-cgi-html.log&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Change the logrotate configuration&amp;#160;: &lt;code&gt;open /etc/logrotate.d/munin&lt;/code&gt; and change &lt;code&gt;create 640 www-data adm&lt;/code&gt; to &lt;code&gt;create 640 munin adm&lt;/code&gt; for the two logfiles.&lt;/p&gt;

&lt;h3&gt;Nginx VirtualHost configuration&lt;/h3&gt;

&lt;p&gt;Create the following /etc/nginx/sites-available/munin&amp;#160;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;server {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #listen&amp;nbsp;&amp;nbsp; 80; ## listen for ipv4; this line is default and implied&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #listen&amp;nbsp;&amp;nbsp; [::]:80 default_server ipv6only=on; ## listen for ipv6&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # Make site accessible from http://localhost/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; server_name localhost;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # Here, the whole vhost has auth requirements.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # You can duplicate it to the graph and html locations if you have&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # something else that doesn't need auth.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; auth_basic&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;Private access&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; auth_basic_user_file&amp;nbsp; /etc/munin/munin_htpasswd;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; location /munin/ {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; alias /var/cache/munin/www/;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # not authenticated =&amp;gt; no rewrite (back to auth)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ($remote_user ~ ^$) { break; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # is on the right subtree ?&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set $ok &quot;no&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # admin can see it all&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ($remote_user = 'admin') { set $ok &quot;yes&quot;; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # only allow given path&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ($uri ~ /munin/([^/]*)) { set $path $1; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ($path = $remote_user) { set $ok &quot;yes&quot;; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # not allowed here ? redirect them where they should land&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ($ok != &quot;yes&quot;) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # redirect to where they should be&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rewrite / /munin/$remote_user/ redirect;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; location ^~ /munin-cgi/munin-cgi-graph/ {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # not authenticated =&amp;gt; no rewrite (back to auth)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ($remote_user ~ ^$) { break; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # is on the right subtree ?&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set $ok &quot;no&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # admin can see it all&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ($remote_user = 'admin') { set $ok &quot;yes&quot;; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # only allow given path&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ($uri ~ /munin-cgi/munin-cgi-graph/([^/]*)) { set $path $1; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ($path = $remote_user) { set $ok &quot;yes&quot;; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # not allowed here ? redirect them where they should land&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ($ok != &quot;yes&quot;) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # redirect to where they should be&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rewrite / /munin-cgi/munin-cgi-graph/$remote_user/ redirect;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fastcgi_split_path_info ^(/munin-cgi/munin-cgi-graph)(.*);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fastcgi_param PATH_INFO $fastcgi_path_info;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fastcgi_pass unix:/var/run/munin/fastcgi-munin-graph.sock;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; include fastcgi_params;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; location&amp;nbsp; ^~ /munin-cgi/munin-cgi-html/ {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # not authenticated =&amp;gt; no rewrite (back to auth)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ($remote_user ~ ^$) { break; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # is on the right subtree ?&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set $ok &quot;no&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # admin can see it all&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ($remote_user = 'admin') { set $ok &quot;yes&quot;; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # only allow given path&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ($uri ~ /munin-cgi/munin-cgi-html/([^/]*)) { set $path $1; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ($path = $remote_user) { set $ok &quot;yes&quot;; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # not allowed here ? redirect them where they should land&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ($ok != &quot;yes&quot;) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # redirect to where they should be&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rewrite / /munin-cgi/munin-cgi-html/$remote_user/ redirect;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fastcgi_split_path_info ^(/munin-cgi/munin-cgi-html)(.*);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fastcgi_param PATH_INFO $fastcgi_path_info;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fastcgi_pass unix:/var/run/munin/fastcgi-munin-html.sock;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; include fastcgi_params;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; location /munin/static/ {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; alias /etc/munin/static/;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Don&amp;#8217;t forget to enable your VirtualHost&amp;#160;: &lt;code&gt;ln -s /etc/nginx/sites-available/munin /etc/nginx/sites-enabled/munin&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;And to restart Nginx&amp;#160;: &lt;code&gt;service nginx restart&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;Htaccess creation&lt;/h3&gt;

&lt;p&gt;To protect our stats, the VirtualHost includes HTTP authentication. But you have to create the htpasswd file in &lt;code&gt;/etc/munin/munin_htpasswd&lt;/code&gt;. To do so, you can install Apache Utils.&lt;/p&gt;

&lt;p&gt;Install Apache utils&amp;#160;: &lt;code&gt;apt-get install apache2-utils&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Create the htpasswd&amp;#160;: &lt;code&gt;touch /etc/munin/munin_htpasswd &amp;amp;&amp;amp; chown root:www-data /etc/munin/munin_htpasswd &amp;amp;&amp;amp; chmod 640 /etc/munin/munin_htpasswd&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;And add your admin password&amp;#160;: &lt;code&gt;htpasswd /etc/munin/munin_htpasswd&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;Conclusion&lt;/h3&gt;

&lt;p&gt;Your Munin installation will be available at &lt;a href=&quot;http://localhost/munin/&quot;&gt;http://localhost/munin/&lt;/a&gt; with your admin password.&lt;/p&gt;

&lt;p&gt;I hope I saved you from a headhache. &lt;img src=&quot;/blog/themes/mathedit_material3/smilies/wink.png&quot; alt=&quot;;)&quot; class=&quot;smiley&quot;&gt;&lt;/p&gt;

&lt;h4&gt;Sources&lt;/h4&gt;

&lt;p&gt;&lt;a href=&quot;http://munin.readthedocs.org/en/latest/example/webserver/nginx.html&quot;&gt;http://munin.readthedocs.org/en/latest/example/webserver/nginx.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://drumcoder.co.uk/blog/2010/aug/04/debian-initd-script-fcgi/&quot;&gt;http://drumcoder.co.uk/blog/2010/aug/04/debian-initd-script-fcgi/&lt;/a&gt;&lt;/p&gt;</description>
        
              </item>
          <item>
        <title>osTicket, wget, crontab and FastCGI</title>
        <link>https://uname.pingveno.net/blog/index.php/post/2013/06/29/osTicket%2C-wget%2C-crontab-and-FastCGI</link>
        <guid isPermaLink="false">urn:md5:ead2d7950681e1bbacd37bc7f0d81ed4</guid>
        <pubDate>Sat, 29 Jun 2013 23:27:00 +0200</pubDate>
        <dc:creator>Mathieu</dc:creator>
                  <category>Hacks</category>
                          <category>fastcgi</category>
                  <category>osTicket</category>
                  <category>php</category>
                  <category>wget</category>
                <description>          &lt;p&gt;After a long night trying to get HTTP cron for osTickets to work, here is my solution&amp;#160;:&lt;/p&gt;
&lt;h3&gt;Things to know&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;Rewritting the URLs of a FastCGI-running PHP application, using Apache2 mod_rewrite on PATH_INFO is broken, &lt;strong&gt;it does not work&lt;/strong&gt;. &lt;strong&gt;Never&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;osTicket &lt;strong&gt;needs&lt;/strong&gt; POST requests to its API.&lt;/li&gt;
&lt;li&gt;osTicket uses an unsafe way to get PATH_INFO, obviously it will not work with FastCGI.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;How to get it work&lt;/h3&gt;
&lt;p&gt;Open &lt;code&gt;&lt;strong&gt;includes/class.osticket.php&lt;/strong&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Replace&amp;#160;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //TODO: conruct possible path info.&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
&lt;br /&gt;With&amp;#160;:
&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $path_info = str_replace(BASE_URI.&quot;/&quot;, &quot;&quot;, $_SERVER['REQUEST_URI']);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!empty($path_info)) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return $path_info;&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;And call the cron like that&amp;#160;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;code&gt;&amp;nbsp;/usr/bin/wget -q --no-cache -O /dev/null --post-data '' --header='X-API-Key:your_api_key_here' 'http://example.com&lt;strong&gt;/api/http.php/tasks/cron&lt;/strong&gt;'&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;</description>
        
              </item>
      </channel>
</rss>
