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だけを許可する方法

おすすめの記事

全く新しい決済サービスPayPal.Meの導入と使い方を解説

全く新しい決済サービスPayPal.Meの導入と使い方を解説

Windows 10でpsd形式のファイルをサムネイル表示する方法

Windows 10でpsd形式のファイルをサムネイル表示する方法

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

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

これ以上ないくらい簡単な例から学ぶ、レスポンシブwebデザインの作り方

これ以上ないくらい簡単な例から学ぶ、レスポンシブwebデザイン…

コピペから脱出!iptablesの仕組みを理解して環境に合わせた設定をしよう

コピペから脱出!iptablesの仕組みを理解して環境に合わせた設…

WordPressの新・旧ループからカスタムクエリ・アーカイブまで徹底解説

WordPressの新・旧ループからカスタムクエリ・アーカイブまで徹…

WordPressのサイトをHTTPS化して学ぶLet’s Encryptの使い方

WordPressのサイトをHTTPS化して学ぶLet’s Encryptの使い方

Mac OS 9時代のIDE接続のHDDをMacDrive 10を利用してWindows 10で読み込む方法

Mac OS 9時代のIDE接続のHDDをMacDrive 10を利用してWindows 10…


コメントを残す

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

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