CentOS release 6.6 (Final)+ Nginx+PHP-FPM+MySQL環境でフレームワークにCurry1.14を利用してシステム構築をしています。


【やりたいこと】は、Nginxのrewite機能を利用して、
http://xxxxxxx.com/pro/items/1/2/2016-06-16/11/0
へのアクセスで
http://xxxxxxx.com/pro/index.php?A=1&B=2&C=2016-06-16&D=11&E=0
にrewiteし、ブラウザのアドレスバーには
http://xxxxxxx.com/pro/items/1/2/2016-06-16/11/0
と表示されている状態になることです。

/etc/nginx/sites-available/pro に以下を設定し
rewriteはできたのですが、アドレスバーは
http://xxxxxxx.com/pro/index.php?A=1&B=2&C=2016-06-16&D=11&E=0
となります。

---------------------------
location /pro/ {
root /var/www/html;
index index.php;
rewrite ^/pro/items/([0-9]+)/([0-9]+)/([^/]+)/([0-9]+)/([0-9]+) /pro/index.php?A=$1&B=$2&C=$3&D=$4&E=$5 permanent;
try_files $uri $uri/ /pro/index.php?$args;
}
---------------------------

そこで、rewriteの最後をpermanentからbreakに変更したところ、アドレスバーは
http://xxxxxxx.com/pro/items/1/2/2016-06-16/11/0
となりますが
PHP が動作せずCromeではテキストファイルがダウンロードされ、IEでは画面にプログラムが表示されてます。

【やりたいこと】ができる設定方法を詳細に教えていただけませんでしょうか?

回答の条件
  • 1人1回まで
  • 登録:
  • 終了:2016/06/20 14:38:12
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:tezcello No.1

回答回数460ベストアンサー獲得回数69

ポイント500pt

「やりたいこと」の本質は、Curry でルーティングするためにフロントのスクリプトに処理を渡したいという事だと思いますので、それに沿って回答します。

> /etc/nginx/sites-available/pro に以下を設定し
デフォルトではそこを読むようにはなっていませんよね?
/etc/nginx/nginx.conf の設定を変更されていると思いますが、どのように変更しているかでいろいろ変わってきてしまうのはお解りですよね?

とりあえず出来るだけデフォルトから変更しない方向で書いていきます。


CentOS 6.6 でサーバを minimam で構築します。

(Nginx をインストールするために)リポジトリ EPEL を追加します。

EPEL より Nginx をインストールします。

PHP, PHP-FPM をインストールします。

/etc/nginx/default.conf の名前を変更しておきます。
default.conf -> default.conf.bak

/etc/nginx/prot.conf を作成して以下を記述します。

server {
  index index.php;
  server_name example.com;
  root /usr/share/nginx/html;

  location /pro {
    if (!-e $request_filename) {
      rewrite ^/pro/(.*) /pro/curry.php last;
    }
  }

  location ~ .php$ {
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_path_info;
    include fastcgi_params;
  }
}

Curry を完全にインストールするのは手間が掛かりそうなので、REQUEST_URI が取得できるかだけチェックします。

/usr/share/nginx/html/pro/index.php に以下を記述します。

<?php
var_dump($_SERVER['REQUEST_URI']);

/etc/php-fpm.d/www.conf の動作するユーザ、グループを nginx に変更します。

PHP-FPM, Nginx を起動します。

ブラウザで http://example.com/pro/hoge0?a=1 にアクセスすれば以下の様に表示されると思います。

string(14) "/pro/hoge0?a=1" 


ドキュメントルートをデフォルト以外に設置する場合は、SELinux のポリシーを適切に設定する必要があるのをお忘れなく。
__SELinux を止めてしまう解説ページが非常に多いのはいかがなモノか

他5件のコメントを見る
id:turinavi

詳細にありがとうございます。これから試してみます。
別件もあります関係で少しお時間をください。

2016/06/20 09:49:38
id:turinavi

再度設定を行ったところ、うまく動きました。大変ありがとうございました。

2016/06/20 14:36:42

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません