it-swarm-ja.com

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;
  }
}
2
GotBatteries

私はこれを理解しました。問題は、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;
  }
}
1
GotBatteries