質問: nginxがsymfony2に書き換えても機能しない 私はnginxの初心者で、コマンドを書き換えます。これについては本当に助けが必要です。私は一日中これを解決しようとしてきましたが、何もしませんでした。ユーザーがこのurlを指定した場合:someurl.com/sub/1.0/healthcheck ここでsymfonysプロジェクトファイルを指すように書き直したいと思います。/var/www/sub/1.0/web/app_dev.php そして、urlの「ヘルスチェック」はsymfonyに適用されます。しかし、いや。ここは何かがおかしい。 symfonyを見つけたようですが、常に返されるため、urlに問題があります。 ルートが見つかりません urlから「healthcheck」を省略しても、同じエラーが返されます。 (ルートとして「/」を使用したインデックスアクションがあります。)現在の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; } }
回答: 私はこれを理解しました。問題は、symfonyがリクエストuriを受け取ることでしたが、fastcgiに関する限り、リライトの影響を受けませんでした。 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; } }