NginxとFastCGIの組み合わせでHTTP_USER_AGENTが取得できない


投稿日:2014年9月17日
  • 0
  • 0


ちょっと変則的な解決法

HTTP_USER_AGENT

NginxFastCGIの組み合わせでPHPを動作させているサーバ、いわゆるphp-fpmで、ユーザーエージェントを取得しようとPHPファイルで$_SERVER[‘HTTP_USER_AGENT’]と入力しましたが値が取得できません。

おかしいな?ということで使える環境変数を全て書き出してみます。

以下PHPファイル

<?php
foreach($_SERVER as $server_key => $server_val){
	echo $server_key."<br />\n";
}

結果

USER
HOME
FCGI_ROLE
REQUEST_METHOD
CONTENT_TYPE
CONTENT_LENGTH
REQUEST_URI
DOCUMENT_URI
DOCUMENT_ROOT
SERVER_PROTOCOL
GATEWAY_INTERFACE
REMOTE_ADDR
REMOTE_PORT
SERVER_ADDR
REDIRECT_STATUS
SCRIPT_FILENAME
HTTP_HOST
HTTP_X_REAL_IP
HTTP_X_FORWARDED_HOST
HTTP_X_FORWARDED_SERVER
HTTP_X_FORWARDED_FOR
HTTP_CONNECTION
HTTP_CONTENT_LENGTH
HTTP_CACHE_CONTROL
HTTP_ACCEPT
HTTP_ORIGIN
HTTP_CONTENT_TYPE
HTTP_REFERER
HTTP_ACCEPT_ENCODING
HTTP_ACCEPT_LANGUAGE
HTTP_COOKIE
PHP_SELF
REQUEST_TIME_FLOAT
REQUEST_TIME

やはり「HTTP_USER_AGENT」が無いようです。

それならとNginxの設定ファイル「/etc/nginx/nginx.conf」にあるバックエンドサーバ側のPHP設定にある「include fastcgi_params;」を変更します。(最近の流行りだとfastcgi.confらしい)
今回は「/etc/nginx/fastcgi_params」にあるので編集します。

# vi /etc/nginx/fastcgi_params

見てみるとやはりHTTP_USER_AGENTに関する指定が無いようです。公式の設定にしたがって変更します。

最終行に以下を追加

fastcgi_param  HTTP_USER_AGENT    $http_user_agent;

「なぁ~にnginxの設定も簡単じゃないか…」とルンルンで再起動しましたが、「HTTP_USER_AGENT」は相変わらず表示されず…。
スペルや書式を何度確認しても表示されない。

こうなったら何でもやってみようばかりに以下のようにしたら取得できるようになりました。

fastcgi_param  HTTP_UA    $http_user_agent;

HTTP_USER_AGENT」という文字を使わなければ値が取れるようです。
PHP側でユーザーエージェントを取得する場合は$_SERVER[‘HTTP_UA’]とすれば取れるようになりました。

めでたしめでたし

…しかし、これってなんで何でしょうか?原因をご存じの方がいたらコメントお願いしますm(_ _)m


現在のページを共有する



現在のページに関連する記事

NginxとFastCGIの組み合わせでHTTP_USER_AGENTが取得できない WordPressの特定のファイルに対してNginxでIPを規制する方法
NginxとFastCGIの組み合わせでHTTP_USER_AGENTが取得できない Nginxとリバースプロキシ、php-fpmとOPcacheのインストールと設定
NginxとFastCGIの組み合わせでHTTP_USER_AGENTが取得できない Nginxで502 Bad Gatewayの原因が「upstream sent too big header~」の場合の対処法
NginxとFastCGIの組み合わせでHTTP_USER_AGENTが取得できない Nginxでkeys zoneが足りなくなった場合の対処法
NginxとFastCGIの組み合わせでHTTP_USER_AGENTが取得できない Apacheのmod_rewriteモジュールの使い方を徹底的に解説
NginxとFastCGIの組み合わせでHTTP_USER_AGENTが取得できない Nginxで特定の国のIPだけを許可する方法
NginxとFastCGIの組み合わせでHTTP_USER_AGENTが取得できない WordPressで画像のアップロードに失敗した時の対処法

おすすめの記事

Web制作の自由度をフレームワークレベルまで高めたCorvid by Wix 

Web制作の自由度をフレームワークレベルまで高めたCorvid by Wi…

今さら聞けない、変数や関数の命名規則と、まず覚えるべき英単語200

今さら聞けない、変数や関数の命名規則と、まず覚えるべき英単…

Question2AnswerへreCAPTCHAを導入する方法

Question2AnswerへreCAPTCHAを導入する方法

WordPress公式テーマTwenty Tenを子テーマでレスポンシブWebデザインに変更

WordPress公式テーマTwenty Tenを子テーマでレスポンシブWebデ…

知らなきゃ損!WordPressの表(テーブル)はExcelで作ろう!

知らなきゃ損!WordPressの表(テーブル)はExcelで作ろう!

サーバで管理していたWordPressをローカル環境に移行する方法

サーバで管理していたWordPressをローカル環境に移行する方法

SNSのカウントをキャッシュするWordPressのプラグインを作成しました

SNSのカウントをキャッシュするWordPressのプラグインを作成し…

Googlebotを手懐ける!robots.txtの書き方とrobots.txtテスターの使い方

Googlebotを手懐ける!robots.txtの書き方とrobots.txtテスター…

DNS Amp攻撃の解説と、踏み台にされないためのBIND DNSの設定

DNS Amp攻撃の解説と、踏み台にされないためのBIND DNSの設定


コメントを残す

コメントは認証制のため、すぐには反映されません。

プログラミングに関する質問は「日本語でプログラミングの悩みを解決するQ&Aサイト sukegra」をご利用ください。