1

ディレクトリから大きな静的ファイルを提供するために、nginx で仮想ロケーションをセットアップしようとしています。メインアプリは symfony2 プログラムです。

私がやりたいのは、GETパラメーター内でファイルパスを指定できるURLを持つことです。これにより、nginxはファイルをクライアントに直接提供できます。

私の例では、場所は /getfile になります

これまでの私の設定は次のとおりです

server
{
    listen                                              80;
    server_name                                         website_url;
    set                                                 $path_web /myapp/webdir;

    client_max_body_size                                200m;   

location /getfile {             
    root /path_to_dir;
        if ($args ~ ^oid=(.*+)) {
          set $key1 $1;
          rewrite ^.*$  $key1;
        }   
    }

location ~ \.php($|/)
{
      set  $script     $uri;
      set  $path_info  "";

      if ($uri ~ "^(.+\.php)(.*)") {
          set  $script     $1;
          set  $path_info  $2;
      }


      fastcgi_pass   unix:/tmp/php-fpm.sock;
      fastcgi_index  index.php;
      fastcgi_param  SCRIPT_FILENAME  $path_web$script;
      fastcgi_param  SCRIPT_NAME      $script;
      fastcgi_param  PATH_INFO        $path_info;

      include   /etc/nginx/conf.d/fastcgi.conf;
}


    root                                                    $path_web;
    index                                                   app.php app_dev.php;

    location / 
    {   
    set $idx_file app.php;

    if ($args ~ debug=true) {
        set $idx_file app_dev.php;
        }

        if ( !-f $request_filename) {
    rewrite ^(.*)$ /$idx_file last; 
        }
    }

    location ~ /\.ht
    {
    deny                 all;
    }



    # logs path
    access_log                                          /path_to_logdir/access.log main;
    error_log                                           /path_to_logdir/error.log;
}
4

2 に答える 2

1

明確な答えがないので、私は私の答えを追加しています。私はむしろtry_filesを使用したいので、そのようになります。

location /my/path {
  # try to serve file directly, fallback to rewrite
  try_files $uri $uri @rewrite;

}
location @rewrite {
  rewrite ^/(.*)$ /app.php/$1 last;
}

サーバーは最初に指定されたパスで画像を探し、見つからない場合は app.php にフォールバックします。app.php にフォールバックしないため、ifs や elses よりもはるかに優れています。

于 2014-05-21T16:20:16.893 に答える