5

WordPressを問題なくインストールして実行しています。ページにはWPの一部ではない要素がありますが、独自のカスタムPHPスクリプトがあります。フォームのPOSTリクエストを処理し、何らかの方法で処理するためだけにあります。

.phpで終わる拡張子がないという要件があります。私のフォームは次のようなものに送信しています:

/places/signup.html

私のnginx構成には、次のものがあります。

server {
    listen       87948; # It's behind a reverse proxy
    server_name domain.com www.domain.com;

    include /etc/nginx/proxy_params;

    index index.php;
    root /opt/www/public_html;

    location /favicon.ico {
        return 404;
    }

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
        expires max;
        log_not_found off;
    }

    location ~ \.php$ {
        add_header Access-Control-Allow-Origin "*";
        client_body_buffer_size 4096k;
        fastcgi_pass unix:/tmp/php5-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME /opt/www/public_html/$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_script_name;
        include /etc/nginx/fastcgi_params;
    }

    # LOOK HERE
    location ~ /places/signup.html {
        root                             /opt/www/custom_scripts/;
        fastcgi_pass    unix:/tmp/php5-fpm.sock;
        fastcgi_param   SCRIPT_FILENAME  /opt/www/custom_scripts/signup-processor.php;
        fastcgi_param   QUERY_STRING     $query_string;
        fastcgi_param   REQUEST_METHOD   $request_method;
        fastcgi_param   CONTENT_TYPE     $content_type;
        fastcgi_param   CONTENT_LENGTH   $content_length;
        include         fastcgi_params;
    }

}

問題は次のとおりです。fastcgiまたはnginx(どちらかはわかりません)がリテラルURLを取得し、ロケーションブロックのルートディレクティブでそれを探しています。エラーログから:

2013/01/16 15:30:42[エラー]20533#0:* 4 FastCGIがstderrで送信されました: "プライマリスクリプトを開くことができません: /opt/www/custom_scripts/places/signup.html(そのようなファイルまたはディレクトリはありません) "アップストリームから応答ヘッダーを読み取っている間、クライアント:66.172.31.153、サーバー:domain.com、リクエスト:" POST /places/signup.html HTTP / 1.1 "、アップストリーム:" fastcgi:// unix:/ tmp / php5-fpm .sock: "、ホスト:" www.domain.com "

「fastcgi_paramSCRIPT_FILENAME/opt/www/custom_scripts/signup-processor.php;」と思いました。その特定のスクリプトを使用するように強制しますか?私はそうは思いませんか?

4

2 に答える 2

10

最後のincludeディレクティブ:

    include         fastcgi_params;

おそらくfastcgi_param、パラメータを持つ別のディレクティブがありSCRIPT_FILENAMEます:

    fastcgi_param   SCRIPT_FILENAME  /another/script/file/name;

ファイルの最後にあるため、値を上書きします。

fastcgi_params ファイルの一部の設定を保持したいが、特定の設定で上書きしたい場合はinclude、最初にディレクティブを配置する必要があります。

location ~ /places/signup.html {
    include         fastcgi_params;
    root                             /opt/www/custom_scripts/;
    fastcgi_pass    unix:/tmp/php5-fpm.sock;
    fastcgi_param   SCRIPT_FILENAME  /opt/www/custom_scripts/signup-processor.php;
    fastcgi_param   QUERY_STRING     $query_string;
    fastcgi_param   REQUEST_METHOD   $request_method;
    fastcgi_param   CONTENT_TYPE     $content_type;
    fastcgi_param   CONTENT_LENGTH   $content_length;
}
于 2013-01-17T22:28:36.537 に答える
0

PHP ファイルを処理するためのディレクティブが既に配置されているようです。

だけじゃない

location ~ /places/signup.html {
   root /opt/www/custom_scripts;
   try_files $uri /signup-processor.php;
}

きれいになって同じことをしますか?

于 2013-02-19T04:00:23.003 に答える