ホームページ > バックエンド開発 > PHPチュートリアル > nginxリバースプロキシを通じて、TomcatはサーバーIPの代わりに実際のクライアントIPを取得します。

nginxリバースプロキシを通じて、TomcatはサーバーIPの代わりに実際のクライアントIPを取得します。

WBOY
リリース: 2016-07-29 08:49:45
オリジナル
1263 人が閲覧しました

nginx リバース プロキシを介して実際の IP を取得することはできません。実際の IP を取得するには、nginx 設定ファイル nginx.conf

proxy_set_header X-Real-IP $remote_addr;

を設定する必要があります。例:

########################################################################
#要转发地域名:
upstream t.csdn.com {

        server 192.168.1.188:8080 max_fails=0 weight=1; #8080为tomcat端口

    }

##################################################################
        server {
        listen 80;
        server_name t.csdn.com;
        access_log /data/wwwlogs/access_tomcat.log combined;
        root /usr/local/tomcat/webapps;
        index index.html index.jsp;

        #反向代理配置,将所有请求为http://hostname的请求全部转发到upstream中定义的目标服务器中。
        location / {

            #此处配置的域名必须与upstream的域名一致,才能转发。

            proxy_pass     http://t.csdn.com;

            proxy_set_header   X-Real-IP $remote_addr;

            }   

         #启用nginx status 监听页面

        location /nginxstatus {

            stub_status on;

            access_log on;

        }


        }
ログイン後にコピー

次に、Tomcat 取得メソッド: java

private static String getRemoteAddrIp(HttpServletRequest request) {
		String ipFromNginx = getHeader(request, "X-Real-IP");
		log.info("ipFromNginx:" + ipFromNginx);
		log.info("getRemoteAddr:" + request.getRemoteAddr());
		return StringUtils.isEmpty(ipFromNginx) ? request.getRemoteAddr()
				: ipFromNginx;
	}

	private static String getHeader(HttpServletRequest request, String headName) {
		String value = request.getHeader(headName);
		return (StringUtils.isNotBlank(value) && !"unknown"
				.equalsIgnoreCase(value)) ? value : "";
	}

ログイン後にコピー
最後に、getRemoteAddrIp メソッドを呼び出して IP を取得します:

String clientIp = getRemoteAddrIp(request);

log.info("客户IP:" + clientIp);
ログイン後にコピー


上記では、Tomcat が nginx リバース プロキシを介してサーバー IP の代わりに実際のクライアント IP を取得する方法を、Tomcat と nginx の内容を含めて紹介しました。PHP チュートリアルに興味のある友人に役立つことを願っています。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート