没有观察到Nginx的位置指令

时间:2014-07-28 14:38:47

标签: nginx

我有一个Ruby on Rails应用程序,它适用于下面粘贴的nginx配置。问题是,我试图添加一个新的URL http://www.example.com/gpp,它将指向服务器上的完整目录路径/应用程序。这是我的配置:

upstream fi {
        server unix:/media/apps/example/shared/tmp/pids/thin.0.sock;
        server unix:/media/apps/example/shared/tmp/pids/thin.1.sock;
        server unix:/media/apps/example/shared/tmp/pids/thin.2.sock;
        server unix:/media/apps/example/shared/tmp/pids/thin.3.sock;
}

server {

  listen 80;
  gzip on;
  gzip_min_length 1000;
  gzip_types application/json text/css application/x-javascript;

  server_name example.com www.example.com;

  sendfile on;

  keepalive_timeout 65;
  client_max_body_size 2m;

  proxy_set_header  X-Real-IP  $remote_addr;
  proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header  X-Forwarded-Proto $scheme;
  proxy_set_header  Host $http_host;

  #root /media/apps/example/current/public;

  location ^~ /assets/ {
    gzip_static on;
    expires max;
    add_header Cache-Control public;
  }

  location ~ \.php$ {
    root           /usr/share/nginx/html;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME   $document_root$fastcgi_script_name;
        include        fastcgi_params;
  }  


  location / {
    root /media/apps/example/current/public;
    proxy_set_header  X-Real-IP  $remote_addr;
    proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header  X-Forwarded-Proto $scheme;
    proxy_set_header  Host $http_host;
    proxy_connect_timeout 3600;
    send_timeout 3600;
    proxy_read_timeout 3600;
    if (!-f $request_filename) {
     proxy_pass http://fi;
     break;
    }
  }

  location /gpp {
      alias /media/apps/podcast;
      index index.php index.html index.htm;
  }

}

每当我访问http://www.example.com/gpp时,它都会转到location /中列出的Rails应用,而不是我在/media/apps/podcast中运行的PHP应用。我也尝试将alias指令更改为root,但这也无法解决问题。

2 个答案:

答案 0 :(得分:0)

我没有看到location别名的/media/apps/podcast指令。我想这个

location /gpp {
  alias /media/apps/podcast;
  index index.php index.html index.htm;
}

应该只是

location /gpp {
  root /media/apps/podcast;
  index index.php index.html index.htm;
}

答案 1 :(得分:0)

尝试一下:

location /podcast {
    root        /media/apps/;
    index       index.php index.html index.htm;

    location ~ ^/podcast/(.+\.php)$ {
        try_files      $uri =404;
        root           /media/apps/;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME   $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
    location ~* ^/podcast/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
        root    /media/apps/;
    }
}

location /gpp {
    rewrite ^/* /podcast last;
}