ドッキングウィンドウ内のサービスは、ユーザーの本当のIPを取得することはできません

背景:MySQLのホスト(Linux)の上で実行されているデータベースとのRedis、ドッキングウィンドウ、nginxの内ウェブ動作(nginxのがドッカで実行されます)内で動作するサーバー、取得したユーザIPは10.0.0.10同様のドッキングウィンドウの内部IPです

需要:本当のIPを取得

方法:

   A、nginxの設定ファイルを変更し、ドッカーコンテナ] [/etc/nginx/conf.d/default.conf

      

サーバー{ 
    聞く        80 
    サーバー名はlocalhost。

    #charset KOI8 - R。
    #access_log  は/ var / log / nginxの/ host.access.logメイン。

    位置 / { 
        ルート    / ウェブ。
        index.htmをindex.htmlをインデックス。
    } 

    #error_page   404               / 404 の.html。

    #静的ページにリダイレクトサーバーエラーページ / 50x.html 
    #の

    位置 / API / { 
        proxy_passのhttp:// ベースのフレームワークサーバ/。
        #下边是为获取真实IP所做的设置
        proxy_set_header X -Real- IP $ REMOTE_ADDR。
        proxy_set_header X -Forwarded- のために$ proxy_add_x_forwarded_for。
        proxy_set_header HTTP_X_FORWARDED_FOR $ REMOTE_ADDR。
        proxy_set_header X -Forwarded- プロト$スキーム。
        proxy_redirectデフォルト; 
    } 

}

 

   第二に、[ツール]の増加HttpUtil

    

org.springframework.util.StringUtilsインポート、

インポートするjavax.servlet.http.HttpServletRequest; 

/ * * 
 * @ClassName HTTPUTIL 
 * @descriptionのHttpツール
 * @author AAFE(微信:xskdjs945)
 * @date 2019年11月28日10: 19 
 * @Version 1.0 
 * * / 
publicクラスHTTPUTIL { 

    / * * 
     *実際のクライアントにIPを取得する
     * 
     * @paramリクエスト
     * @return 
     * / 
    パブリック静的文字列getClientIP(HttpServletRequestのリクエスト){ 

        // セット構成にnginxの必要性 
        のString IP request.getHeader =(" X-のReal-IP- " );
         IF(StringUtils.isEmpty(IP)){ 
            IP = request.getRemoteAddr()。
        } 
        IP返します。
    } 

}

 

 

 

 

おすすめ

転載: www.cnblogs.com/java-bhp/p/11984064.html