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が取得できない WordPressで画像のアップロードに失敗した時の対処法
NginxとFastCGIの組み合わせでHTTP_USER_AGENTが取得できない Nginxで特定の国のIPだけを許可する方法

おすすめの記事

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

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

Norikraの使い方をサンプルのクエリとイベントを交えて解説

Norikraの使い方をサンプルのクエリとイベントを交えて解説

Linuxでサーバを構築するに当たって必要になる基礎知識

Linuxでサーバを構築するに当たって必要になる基礎知識

Custom Post Type UIでカスタム投稿を作って、誰でも簡単に編集できる投稿画面を作る方法

Custom Post Type UIでカスタム投稿を作って、誰でも簡単に編集…

PukiWikiで5段階評価を付けるプラグインを作成しました

PukiWikiで5段階評価を付けるプラグインを作成しました

GMO系列のホスティングサービスでGmailへメールが送信できない不具合が発生中

GMO系列のホスティングサービスでGmailへメールが送信できない…

fluentdと連動して集計処理を行うNorikraの導入方法

fluentdと連動して集計処理を行うNorikraの導入方法

新しいGoogleマップ「Google Maps Platformの使い方」まとめ

新しいGoogleマップ「Google Maps Platformの使い方」まとめ


コメントを残す

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

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