2016-09-14 15 views
0

各パスに独自のルートディレクトリがあるようにnginxを設定しようとしています。サブディレクトリごとに別のルートを持つnginx

location ^~ /foo { 
     alias /www/foo; 
     #index index.php; 
     try_files $uri /www/foo/index.php$request_uri; 
     access_log /var/log/nginx/foo.log main; 
     error_log /var/log/nginx/foo.log error; 
    } 

    location ^~ /bar { 
     alias /www/bar; 
     #index index.php; 
     try_files $uri /www2/bar/index.php$request_uri; 
     access_log /var/log/nginx/bar.log main; 
     error_log /var/log/nginx/bar.log error; 
    } 

    location ~ \.php { 
     set $php_root /usr/local/deploy/baz/current/web; 
     if ($request_uri ~* /foo) { 
      set $php_root /www/foo/current/web; 
     } 
     if ($request_uri ~* /bar) { 
      set $php_root /www2/bar/current/web; 
     } 

     fastcgi_pass 127.0.0.1:9000; 
     fastcgi_index index.php; 
     fastcgi_param SCRIPT_FILENAME $php_root$fastcgi_script_name; 
     fastcgi_param DOCUMENT_ROOT $php_root; 
     include  fastcgi_params; 
} 
+0

* * php-fpmに対する* POSTリクエストは405エラーをスローしますか?そうでない場合は、指定してください – YakovL

答えて

0

エイリアスがファイルパスに場所のパスを追加していません。しかしこれは、大部分のphp-FPM現在しようと405

を投げへのPOSTを進めています。論理フローを確認してください。サーバールートが/var/www/publicにある場合、foo/var/www/foo/publicにあり、bar/var/www/bar/publicにあります。その後、これは簡単な設定になります:あなたは、その後1つのディレクティブでPHPを使用したい場合は

server { 
root /var/www/public; 
... 
location /foo { 
    root /var/www/foo/public; 
    } 
location ~ /foo/.+\.php$ { 
    fastcgi_param SCRIPT_FILENAME /var/www/foo/public$fastcgi_script_name; 
    # rest of fastcgi 
} 

location /bar { 
    root /var/www/bar/public; 
} 

location ~ /bar/.+\.php$ { 
    fastcgi_pass 127.0.0.1:9000; 
    fastcgi_param  SCRIPT_FILENAME/var/www/bar/public$fastcgi_script_name; 
    # rest of fastcgi 
} 
} # ends server 

server { 
... 
root /var/www/public; 
... 
location /foo { 
    root /var/www/foo/public; 
    } 
location /bar { 
    root /var/www/bar/public; 
    } 

location ~ \.php$ { 
    set $php_root /var/www/public; 
    if ($request_uri ~* /foo) { 
     set $php_root /var/www/foo/public; 
    } 
    if ($request_uri ~* /bar) { 
     set $php_root /var/www/bar/public; 
    } 
    fastcgi_pass 127.0.0.1:9000; 
    fastcgi_index index.php; 
    fastcgi_param SCRIPT_FILENAME $php_root$fastcgi_script_name; 
    include /etc/nginx/fastcgi_params; 
     } 
... 
} # server block ends 

使用法のalias - http://nginx.org/en/docs/http/ngx_http_core_module.html#alias nginxの修飾子 - http://nginx.org/en/docs/http/ngx_http_core_module.html#location

より多くのパスが必要な場合は、シンボリックリンクする必要があります。

関連する問題