Need help with nginx rewrites (for sub-domains)

Edho P Arief edhoprima at
Fri Apr 29 07:20:11 MSD 2011

On Fri, Apr 29, 2011 at 6:11 AM, Jimish Jobanputra <lists at> wrote:
> Hello,
> I have been scratching my head last 2 days trying to get this working:
> I have a Rails application, say, and now I want to
> run a PHP app on
> I set up the PHP app but I am having a hard time with nginx rewrites. I
> hope someone here can assist me:
> Here's how I set up things in nginx.conf
> Now loads up the home page, however if I try
> (with the extra slash), it says "No input
> file found"
> Same goes with and so on.. somehow the
> rewrites are screwed up i guess..
> PS: The above code has been tweaked again and again, so if there is
> something silly, be nice and let me know ;)

you're thinking too far.

First, create a symlink like this:
/home/jjobanputra/code/coupon/coupons => /home/jjobanputra/code/coupon/upload

ln -s /home/jjobanputra/code/coupon/upload /home/jjobanputra/code/coupon/coupons

Using alias is a shortcut for getting headache.

then the config:

#order is important.
location ~ ^/coupons/.*\.php$ {
  root /home/jjobanputra/code/coupon;
  try_files $uri =404;
  fastcgi_index index.php;
  #probably not needed - it should be covered in fastcgi.conf
  fastcgi_param SCRIPT_FILENAME $request_filename;
  include /opt/nginx/conf/fastcgi.conf;

location /coupons/ {
  root /home/jjobanputra/code/coupon;
  index index.php index.html index.htm;
  #this line below probably not going to work as expected
  #the alternative is to capture the url using location ~ ^/coupons/(.*)
  # and use it as parameter replacing uri in q=$uri
  #another possible hack is using @location and rewrite.
  try_files $uri $uri/ /coupons/index.php?q=$uri;
  expires 30d;

#I find this mandatory for any kind of rewrites.
#Especially if the root is different than the global root.
#Basically a behaviour difference.
location = /coupons {
  rewrite ^ /coupons/ permanent;

More information about the nginx mailing list