2016-09-14 1 views
0

각 경로에 고유 한 루트 디렉토리가 있으므로 nginx를 설정하려고합니다. 이것은 그러나 현재 노력하고있는 405서브 디렉토리 당 별도의 루트가있는 nginx

던지는 PHP-FPM에 POST, 대부분의 노력 :

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

별칭 파일 경로에 위치 경로를 추가하지 않습니다. 논리 흐름을 확인하십시오. 서버 루트가 /var/www/public 인 경우 foo/var/www/foo/public에 있으며 bar/var/www/bar/public에 있습니다. 그리고, 이것은 쉽게 설정 될 것입니다 : 당신이 다음 하나 개의 지침에 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

더 많은 경로가 필요하다면 심볼릭 링크해야합니다.

관련 문제