  
<div id="snippet_411" class="snippet">
  <h2><a href="/snippets/411-How-to-remove-html-from-URLs-with-nginx-rewrites" title="How to remove .html from URLs with nginx rewrites - Shell Script (Bash) - nginx, html, rewrite">How to remove .html from URLs with nginx rewrites</a></h2>
  <div class="details">
    <a style="background-color: #FFFF94;" href="http://snippets.aktagon.com/languages/131-Shell-Script-Bash-">
      Shell Script (Bash)</a> posted 3 months ago by christian
          
  </div>

  <div class="body">
    <p>This will rewrite http://xxx.com/porn to http://xxx.com/porn.html behind the scenes:</p>
<p><pre class="active4d"><span class="line-numbers">   1 </span> location / {
<span class="line-numbers">   2 </span>         <span class="LineComment"><span class="LineComment">#</span> break if URI has .html extension</span>
<span class="line-numbers">   3 </span>         <span class="Keyword">if</span> (<span class="Variable"><span class="Variable">$</span>request_filename</span> <span class="Operator">~</span>* ^.+.html$) {
<span class="line-numbers">   4 </span>           break<span class="Operator">;</span>
<span class="line-numbers">   5 </span>         }
<span class="line-numbers">   6 </span>         <span class="LineComment"><span class="LineComment">#</span> add .html to URI and serve file, directory, or symlink if it exists</span>
<span class="line-numbers">   7 </span>         <span class="Keyword">if</span> (-e <span class="Variable"><span class="Variable">$</span>request_filename</span>.html) {
<span class="line-numbers">   8 </span>           rewrite ^/(.*)$ /<span class="Variable"><span class="Variable">$</span>1</span>.html last<span class="Operator">;</span>
<span class="line-numbers">   9 </span>           break<span class="Operator">;</span>
<span class="line-numbers">  10 </span>         }
<span class="line-numbers">  11 </span>       }
</pre></p>
<p>This <span class="caps">URL</span> will also work http://xxx.com/porn/</p>
  </div>

  <div style="font-size: 0.8em;margin:0.5em;">
    
      Tagged <a href="/tags/143-nginx">nginx</a>, <a href="/tags/186-html">html</a>, <a href="/tags/145-rewrite">rewrite</a>
    
    
  </div>
</div>



  
<div id="snippet_410" class="snippet">
  <h2><a href="/snippets/410-How-to-remove-trailing-slash-with-nginx-rewrites" title="How to remove trailing slash with nginx rewrites - Plain Text - nginx, rewrite">How to remove trailing slash with nginx rewrites</a></h2>
  <div class="details">
    <a style="background-color: #FFFF94;" href="http://snippets.aktagon.com/languages/103-Plain-Text">
      Plain Text</a> posted 3 months ago by christian
          
  </div>

  <div class="body">
    <p><pre class="active4d"><span class="line-numbers">   1 </span> # Remove trailing slash by doing a 301 redirect
<span class="line-numbers">   2 </span> rewrite ^/(.*)/$ /$1 permanent;
</pre></p>
  </div>

  <div style="font-size: 0.8em;margin:0.5em;">
    
      Tagged <a href="/tags/143-nginx">nginx</a>, <a href="/tags/145-rewrite">rewrite</a>
    
    
  </div>
</div>



  
<div id="snippet_402" class="snippet">
  <h2><a href="/snippets/402-How-to-install-Nginx-from-source-Ruby-Enterprise-Edition-and-Phusion-Passenger" title="How to install Nginx from source, Ruby Enterprise Edition, and Phusion Passenger - Shell Script (Bash) - nginx, install, passenger, ree">How to install Nginx from source, Ruby Enterprise Edition, and Phusion Passenger</a></h2>
  <div class="details">
    <a style="background-color: #FFFF94;" href="http://snippets.aktagon.com/languages/131-Shell-Script-Bash-">
      Shell Script (Bash)</a> posted 4 months ago by christian
          
  </div>

  <div class="body">
    <p>Ruby Enterprise Edition:</p>
<p><pre class="active4d"><span class="line-numbers">   1 </span> cd /usr/local/src
<span class="line-numbers">   2 </span> wget thttp://rubyforge.org/frs/download.php/66162/ruby-enterprise-1.8.7-2009.10.tar.gz
<span class="line-numbers">   3 </span> tar zxvf ruby-enterprise-1.8.7-2009.10.tar.gz
<span class="line-numbers">   4 </span> ./ruby-enterprise-1.8.7-2009.10/installer
<span class="line-numbers">   5 </span> 
<span class="line-numbers">   6 </span> ln -fs /opt/ruby-enterprise-1.8.7-2009.10 /opt/ruby-enterprise/
<span class="line-numbers">   7 </span>  
</pre></p>
<p>Nginx:</p>
<p><pre class="active4d"><span class="line-numbers">   1 </span> wget -P http://sysoev.ru/nginx/nginx-0.7.63.tar.gz
<span class="line-numbers">   2 </span> tar -xzf nginx-0.7.63.tar.gz
<span class="line-numbers">   3 </span>  
</pre></p>
<p>Phusion Passenger:</p>
<p><pre class="active4d"><span class="line-numbers">   1 </span> gem install passenger
<span class="line-numbers">   2 </span> /opt/ruby-enterprise/bin/passenger-install-nginx-module --auto --nginx-source-dir=/tmp/nginx-0.7.63 --prefix=/opt/nginx --extra-configure-flags=--with-http_ssl_module
<span class="line-numbers">   3 </span>  
</pre></p>
  </div>

  <div style="font-size: 0.8em;margin:0.5em;">
    
      Tagged <a href="/tags/143-nginx">nginx</a>, <a href="/tags/188-install">install</a>, <a href="/tags/593-passenger">passenger</a>, <a href="/tags/817-ree">ree</a>
    
    
  </div>
</div>



  
<div id="snippet_375" class="snippet">
  <h2><a href="/snippets/375-nginx-fastcgi-and-wordpress" title="nginx, fastcgi and wordpress - Shell Script (Bash) - nginx, fastcgi and wordpress">nginx, fastcgi and wordpress</a></h2>
  <div class="details">
    <a style="background-color: #FFFF94;" href="http://snippets.aktagon.com/languages/131-Shell-Script-Bash-">
      Shell Script (Bash)</a> posted 6 months ago by marko
          
  </div>

  <div class="body">
    <p>Some pitfalls I ran into.</p>
<p><span class="caps">CSS</span> is served up as text/html by fastcgi to nginx. Determine this by turning on &#8220;Net&#8221; in <a href="http://getfirebug.com">Firebug</a>. Firefox in it&#8217;s standard compliance isn&#8217;t able to view the style sheet and therefore any images that may be defined in it. Solution; Serve up static stuff as static stuff through nginx:<br />
<pre class="active4d"><span class="line-numbers">   1 </span> server {
<span class="line-numbers">   2 </span>         <span class="LineComment"><span class="LineComment">#</span> ... abbreviated</span>
<span class="line-numbers">   3 </span>             location <span class="Operator">~</span>* ^.+<span class="UserDefinedConstant">\.</span>(jpg<span class="Operator">|</span>jpeg<span class="Operator">|</span>gif<span class="Operator">|</span>png<span class="Operator">|</span>ico<span class="Operator">|</span>css<span class="Operator">|</span>zip<span class="Operator">|</span>tgz<span class="Operator">|</span>gz<span class="Operator">|</span>rar<span class="Operator">|</span>bz2<span class="Operator">|</span>doc<span class="Operator">|</span>xls<span class="Operator">|</span>exe<span class="Operator">|</span>pdf<span class="Operator">|</span>ppt<span class="Operator">|</span>txt<span class="Operator">|</span>tar<span class="Operator">|</span>mid<span class="Operator">|</span>midi<span class="Operator">|</span>wav<span class="Operator">|</span>bmp<span class="Operator">|</span>rtf<span class="Operator">|</span>js<span class="Operator">|</span>mov)$ {
<span class="line-numbers">   4 </span>                     root /home/wordpress/wordpress<span class="Operator">;</span>
<span class="line-numbers">   5 </span>             }
<span class="line-numbers">   6 </span>         <span class="LineComment"><span class="LineComment">#</span> ... abbreviated</span>
<span class="line-numbers">   7 </span>     }
</pre></p>
<p>You receive the error &#8220;The plain <span class="caps">HTTP</span> request was sent to <span class="caps">HTTPS</span> port&#8221;. Solution: Turn on <span class="caps">HTTPS</span> in fastcgi by sending the follwing parameter to it in nginx.conf.</p>
<p><pre class="active4d"><span class="line-numbers">   1 </span> server {
<span class="line-numbers">   2 </span>         <span class="LineComment"><span class="LineComment">#</span> ... abbreviated</span>
<span class="line-numbers">   3 </span>             location / {
<span class="line-numbers">   4 </span>                     <span class="LineComment"><span class="LineComment">#</span> ... abbreviated</span>
<span class="line-numbers">   5 </span>                     fastcgi_param HTTPS on<span class="Operator">;</span>
<span class="line-numbers">   6 </span>                     <span class="LineComment"><span class="LineComment">#</span> ... abbreviated</span>
<span class="line-numbers">   7 </span>             }
<span class="line-numbers">   8 </span>         <span class="LineComment"><span class="LineComment">#</span> ... abbreviated</span>
<span class="line-numbers">   9 </span>     }
</pre></p>
<p>You get the <span class="caps">FTP</span> dialogue when trying to upload a new theme. Solution: Check that the process which runs fastcgi has write privileges into the wordpress folder.</p>
  </div>

  <div style="font-size: 0.8em;margin:0.5em;">
    
      Tagged <a href="/tags/143-nginx">nginx</a>, <a href="/tags/809-fastcgi-and-wordpress">fastcgi and wordpress</a>
    
    
  </div>
</div>



  
<div id="snippet_247" class="snippet">
  <h2><a href="/snippets/247-Logging-nginx-to-remote-loghost-with-syslog-ng-" title="Logging nginx to remote loghost with syslog-ng. - Shell Script (Bash) - nginx, loghost, remote logging, syslog-ng">Logging nginx to remote loghost with syslog-ng.</a></h2>
  <div class="details">
    <a style="background-color: #FFFF94;" href="http://snippets.aktagon.com/languages/131-Shell-Script-Bash-">
      Shell Script (Bash)</a> posted about 1 year ago by marko
          
  </div>

  <div class="body">
    <p>Nginx does not support syslog by default, so you have to patch it with a third party module. This snippet relies on that you have configured xstow. See <a href="http://snippets.aktagon.com/snippets/188-Installing-git-without-getting-screwed-over-when-it-s-time-to-uninstall-upgrade-or-install-package-maintainer-s-version">this</a> snippet for instructions on xstow configuration.
<pre class="active4d"><span class="line-numbers">   1 </span> cd /tmp
<span class="line-numbers">   2 </span> wget http://sysoev.ru/nginx/nginx-0.6.32.tar.gz
<span class="line-numbers">   3 </span> tar zxvf nginx-0.6.32.tar.gz
<span class="line-numbers">   4 </span> mv nginx-0.6.32 src-0.6.32-orig
<span class="line-numbers">   5 </span> wget <span class="String"><span class="String">&quot;</span>http://wiki.codemongers.com/NginxModules?action=AttachFile&amp;do=get&amp;target=syslog.patch<span class="String">&quot;</span></span> -O syslog.patch
<span class="line-numbers">   6 </span> patch -p0 <span class="Operator">&lt;</span> syslog.patch
<span class="line-numbers">   7 </span> cd src-0.6.32-orig
<span class="line-numbers">   8 </span> ./configure --prefix=/usr/local/stow/nginx --with-syslog
<span class="line-numbers">   9 </span> make
<span class="line-numbers">  10 </span> sudo make install
<span class="line-numbers">  11 </span> cd /usr/local/stow
<span class="line-numbers">  12 </span> sudo xstow nginx
</pre></p>


	<p>I-am-a-noob-at-syslog-disclaimer: This might be a totally wrong way to configure the server and client(s), so it is subject for refinement. In my experience it works though.</p>


	<p>Configuring the <strong>client</strong>. Add the following lines to the end of /etc/syslog-ng/syslog-ng.conf and restart syslog-ng with /etc/init.d/syslog-ng restart. Nginx logs in facility local5 and the hostname of the loghost is &#8220;loghost&#8221;. You could just as well use the IP of the loghost.
<pre class="active4d"><span class="line-numbers">   1 </span> filter f_local5 { facility(local5)<span class="Operator">;</span> }<span class="Operator">;</span>
<span class="line-numbers">   2 </span> destination d_loghost {tcp(<span class="String"><span class="String">&quot;</span>loghost<span class="String">&quot;</span></span> port(514))<span class="Operator">;</span>}<span class="Operator">;</span>
<span class="line-numbers">   3 </span> log { source(s_all)<span class="Operator">;</span> filter(f_local5)<span class="Operator">;</span> destination(d_loghost)<span class="Operator">;</span> }<span class="Operator">;</span>
</pre></p>


	<p>Configuring the <strong>server</strong>. Add the following lines to the end of /etc/syslog-ng/syslog-ng.conf and restart syslog-ng with /etc/init.d/syslog-ng restart. Also if you run a cluster of nginx servers it might be wise to put all the output in one file, instead of separate files per host.
<pre class="active4d"><span class="line-numbers">   1 </span> source s_remote { <span class="FunctionName">tcp</span>()<span class="Operator">;</span> }<span class="Operator">;</span>
<span class="line-numbers">   2 </span> destination d_clients { file(<span class="String"><span class="String">&quot;</span>/var/log/HOSTS/nginx.<span class="Variable"><span class="Variable">$</span>HOST</span><span class="String">&quot;</span></span>)<span class="Operator">;</span> }<span class="Operator">;</span>
<span class="line-numbers">   3 </span> log { source(s_remote)<span class="Operator">;</span> destination(d_clients)<span class="Operator">;</span> }<span class="Operator">;</span>
</pre></p>


	<p>Test the logging by running this from the client.
<pre class="active4d"><span class="line-numbers">   1 </span> logger -p local5.info Hubbabubba
</pre></p>
  </div>

  <div style="font-size: 0.8em;margin:0.5em;">
    
      Tagged <a href="/tags/143-nginx">nginx</a>, <a href="/tags/563-loghost">loghost</a>, <a href="/tags/564-remote-logging">remote logging</a>, <a href="/tags/565-syslog-ng">syslog-ng</a>
    
    
  </div>
</div>




<div class="pagination"><span class="disabled">&laquo; Previous</span> <span class="current">1</span> <a href="/tags/show/143-nginx/page/2">2</a> <a href="/tags/show/143-nginx/page/3">3</a> <a href="/tags/show/143-nginx/page/4">4</a> <a href="/tags/show/143-nginx/page/2">Next &raquo;</a></div>

