2016-10-19 10 views
0

私はnginxの初心者です。書き直しコマンドであり、本当に助けが必要です。私は一日中何もこの問題を解決しようとしてきた。..Nginxがsymfony2を書き直しても動作しません。

ユーザーはこのURLを与える場合:

someurl.com/sub/1.0/healthcheck 

私はここにSymfonysプロジェクトファイルに指すように書き換えたい:

/var/www/sub/1.0/web/app_dev.php 

URLの「healthcheck」がSymfonyになります。

しかし、ここは何かがおかしい。

をルートが、私は、URLから「ヘルスチェック」を省略した場合でも、それはまだ返し

が見つかりません:symfonyのを見つけたが、それは常に返しますので、URLに何か問題があると思われます同じエラー。 ( "/" などのルートを持つインデックス-actionある。)ここで

現在のnginxの設定ファイルである:

server { 
    server_name localhost; 
    root /var/www/sub/1.0/web; 

    error_log /var/log/nginx/error.log; 
    access_log /var/log/nginx/access.log; 

    location/{ 
     root /var/www/html/; 
     index index.html; 
    } 

    location /sub/1.0/ { 
    index app_dev.php; 

    rewrite ^/sub/1.0/ /app_dev.php last; 
    } 

    location ~ (app|app_dev).php { 
    include fastcgi_params; 
    fastcgi_split_path_info ^(.+\.php)(/.+)$; 
    fastcgi_param PATH_INFO $fastcgi_path_info; 
    fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; 
    fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; 
    } 
} 

答えて

0

私はこれを考え出しました。問題はsymfonyがfastcgiに関する限り書換えの影響を受けなかったuriリクエストを受け取ることでした。私は "fastcgi_param REQUEST_URI $ uri?$ args;"を追加しました。とtadaa!できます!

ここで(ルート位置「/」のような過剰な行ないが、)固定設定は次のとおり

server { 
    root /var/www/sub/1.0/web; 

    error_log /var/log/nginx/error.log; 
    access_log /var/log/nginx/access.log; 

    # If user writes the app_xxx.php into the url, remove it: 
    rewrite ^/app_dev\.php/?(.*)$ /$1 permanent; 

    location /sub/1.0/ { 
     index app_dev.php; 
     rewrite ^/sub/1.0/(.*)$ /app_dev.php/$1 last; 
     return 403; # If the rewrite was not succesfull, return error. 
    } 

    location ~ (app|app_dev).php { 
    include fastcgi_params; 
    fastcgi_split_path_info ^(.+\.php)(/.+)$; 
    fastcgi_param PATH_INFO $fastcgi_path_info; 
    fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; 
    fastcgi_param REQUEST_URI $uri?$args; 
    fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; 
    } 
} 
関連する問題