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

おすすめの記事

WordPressで手軽にAdblock対策するならBetter Stop AdBlockで決まり!

WordPressで手軽にAdblock対策するならBetter Stop AdBlockで決…

サーバリソースをリアルタイムに監視するdstatのインストールと使い方

サーバリソースをリアルタイムに監視するdstatのインストールと…

使うであろう文字だけの、HTML・XHTMLエンティティシート

使うであろう文字だけの、HTML・XHTMLエンティティシート

W3 Total Cacheの設定を通して学ぶ、WordPressを高速化するキャッシュの仕組み

W3 Total Cacheの設定を通して学ぶ、WordPressを高速化するキャ…

Google Feed APIの代替手段としてjQueryだけでRSSを表示する方法

Google Feed APIの代替手段としてjQueryだけでRSSを表示する方法

ads.txtの設置方法を通して学ぶインターネット広告の問題点

ads.txtの設置方法を通して学ぶインターネット広告の問題点

Windows 10でネットワークが不安定になった際の対策まとめ

Windows 10でネットワークが不安定になった際の対策まとめ

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

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


コメントを残す

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

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