背景: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返します。 } }