nginxでApacheのActionディレクティブと同様の動作を実現したいです。


過去にApche 2.4で、特定のディレクトリ配下でhtmlがリクエストされた場合、
以下のようにラッパー用のPHP(/wrapper.php)をCGIとして動作させていました。
-----------------------------------
AddHandler file-type .html
Action file-type /wrapper.php
-----------------------------------

上記を含むコンテンツをnginx/1.10.2に移行したのですが、
同様の動作を実現したいです。

【前提】
OS : Amazon Linux AMI release 2016.09
nginx 1.10.2
PHPバージョン: 5.6
php-fpm はインストール済みで、
nginx上でPHPが動作する環境はできています。

----------------------------------------------------------------------

【質問】
1. Apacheを使わずに同様の動作(htmlがリクエストされた場合、特定ファイルをCGIとして動作させる)が可能でしょうか?
2. nginxのみで可能な場合、必要な解決策と手順をご教示いただけると助かります。

Apacheを利用した方が良い、という意見は結構です。

回答の条件
  • 1人1回まで
  • 登録:
  • 終了:2017/03/10 23:00:05
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:a-kuma3 No.1

回答回数4971ベストアンサー獲得回数2153

ポイント100pt

nginx で CGI を起動するあたりは分かっている前提で書きます。

ある特定の CGI に振り向けたいなら、SCRIPT_FILENAME を上書きしちゃえば良いと思います。

server { 
 
  location ~ \.html(\?|$) { 
    fastcgi_split_path_info ^(.+\.html)(.*)$;

    ...
    include fastcgi_params; 

    ...
    fastcgi_param SCRIPT_FILENAME $document_root/wrapper.php
 
  } 
} 

.html な URL で searchpart が付くのかどうかわからないので、その辺りは適宜やってください。

【参考】
nginx fastcgi_params を include する箇所、割と皆間違ってるよね? - Qiita

id:leech

いただいた内容で無事動きました。
ありがとうございました!

2017/03/10 22:59:50

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

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

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

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

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