官方说明:

例子:

虚拟机ip:192.168.85.3,物理机VMware Network Adapter VMnet8  ip:192.168.85.1

1,准备tomcat

准备一tomcat,端口,8080

准备一Jsp,用于获取客户端真实IP和nginx IP ,test.jsp:

  1. <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  3. <html>
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  6. <title>Test Page</title>
  7. </head>
  8. <body>
  9. Test1 Page!!!<br/>
  10. remote ip : <%-- <%=request.getHeader("X-real-ip") %> --%> <br/>
  11. nginx server ip : <%=request.getRemoteAddr()%>
  12. </body>
  13. </html>

将test.jsp 上传到 tomcat的/ROOT目录下。

2,配置nginx

注意,反向代理之后获取到客户端IP地址为nginx服务器地址,这里需要nginx进行forward,设置真实的ip地址。往请求头set一变量 X-real-ip ,值取客户端ip,这样就可以在jsp中获取该变量:

proxy_set_header  X-real-ip  $remote_addr;

匹配.jsp结尾的请求:

location ~ \.jsp$

3,测试

启动tomcat,启动nginx,浏览器访问:http://192.168.85.3:70/test.jsp

在Java里面一般有一个工具类来获取 IP:

  1. public class IpUtils {
  2. private IpUtils() {
  3. }
  4.  
  5. public static String getIpAddr(HttpServletRequest request) {
  6. if (request == null) {
  7. return "unknown";
  8. }
  9. String ip = request.getHeader("x-forwarded-for");
  10. if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
  11. ip = request.getHeader("Proxy-Client-IP");
  12. }
  13. if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
  14. ip = request.getHeader("X-Forwarded-For");
  15. }
  16. if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
  17. ip = request.getHeader("WL-Proxy-Client-IP");
  18. }
  19. if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
  20. ip = request.getHeader("X-Real-IP");
  21. }
  22.  
  23. if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
  24. ip = request.getRemoteAddr();
  25. }
  26. return ip;
  27. }
  28. }

linux下配置nginx反向代理例子的更多相关文章

  1. Linux 下的 Nginx 反向代理配置.

    最近实践中遇到了需要利用 nginx 进行反向代理服务器请求的需求,以前没怎么碰触过,因此花了1个多小时,快速阅览了一下nginx官网在反向代理服务中给出的基本定义: 说实话,官网给予的定义是精准的, ...

  2. linux下配置nginx负载均衡例子

    准备2台虚拟机: 分别在两个虚拟机上安装tomcat,并在服务器A安装nginx,其中nginx端口设置为了 70. 服务器A的tomcat安装目录: 服务器B的tomcat安装目录: 服务器A的ng ...

  3. Linux服务-配置Nginx反向代理

    任务目标:实现基于轮询的方式调度三台web,并验证结果:实现基于权重的方式调度三台web,并验证结果:实现基于hash的方式调用三台web,并验证结果 由于刚刚做了nfs设置,为了提现实验结果,我在w ...

  4. 【netcore基础】CentOS 7.6.1810 搭建.net core 2.1 linux 运行环境 nginx反向代理 supervisor配置自启动

    之前写过一篇Ubuntu的环境搭建博客,感觉一些配置大同小异,这里重点记录下 nginx 作为静态 angular 项目文件服务器的配置 参考链接 [netcore基础]ubuntu 16.04 搭建 ...

  5. CentOS 7 学习(二) 配置Nginx反向代理

    CentOS 7 学习(二) 配置Nginx反向代理 Nginx可以通过php-fpm来运行PHP程序,也可以转向apache,让apache调用php程序来运行. 不过对于Nginx来说,其反向代理 ...

  6. 为docker私有registry配置nginx反向代理

    公司的Docker私有registry已经搭建好了,用官方的registry image很容易就搭建好了.现在就是要用nginx的反向代理把它放出来,以便在外网可以访问. 我的上一篇blog 讲了如何 ...

  7. 配置LANMP环境(7)-- 配置nginx反向代理,与配置apache虚拟主机

    一.配置nginx反向代理 1.修改配置文件 vim /etc/nginx/nginx.conf 在35行http下添加一下内容: include /data/nginx/vhosts/*.conf; ...

  8. 使用SSL配置Nginx反向代理的简单指南

    反向代理是一个服务器,它接收通过Web发出的请求,即http和https,然后将它们发送到后端服务器(或服务器).后端服务器可以是单个或一组应用服务器,如Tomcat,wildfly或Jenkins等 ...

  9. [亲测]ASP.NET Core 2.0怎么发布/部署到Ubuntu Linux服务器并配置Nginx反向代理实现域名访问

    前言 ASP.NET Core 2.0 怎么发布到Ubuntu服务器?又如何在服务器上配置使用ASP.NET Core网站绑定到指定的域名,让外网用户可以访问呢? 步骤 第1步:准备工作 一台Liun ...

随机推荐

  1. 650. 2 Keys Keyboard复制粘贴的次数

    [抄题]: Initially on a notepad only one character 'A' is present. You can perform two operations on th ...

  2. Working days

    form FRM_GET_WORKING_DAYS TABLES pt_days CHANGING pv_duration. DATA:ls_xt001w TYPE t001w, lv_sdate T ...

  3. SpringMVC 使用验证框架 Bean Validation(上)

    SpringMVC 使用验证框架 Bean Validation(上) 对于任何一个应用而言在客户端做的数据有效性验证都不是安全有效的,这时候就要求我们在开发的时候在服务端也对数据的有效性进行验证. ...

  4. BigDecimal用法总结

    BigDecimal用法总结 BigDecimal常用于金额的计算,下面总结下这次项目中BigDecimal的用法. 1.加减乘除 2.设置精度 3.取反 加减乘除分别调用函数 [java] view ...

  5. EasyWeChat使用(laravel框架下)

    最近做了个项目是关于微信网页开发的,今天记录下在做项目中的关于微信这块遇到的一些坑 关于微信这块,用的是EasyWeChat,提高了开发的效率.在看EasyWeChat这个文档的时候发现了有专门针对l ...

  6. git的一些常用操作

    一.克隆默认分支 git clone 远程地址 二.克隆某一分支 git clone -b 分支名 远程地址 三.切换分支 git branch 分支名 四.一般开发提交的流程 1).查看本地状态 g ...

  7. ipv6 docker

    DOCKER, IPV6 BASIC CONFIGURATION OF DOCKER ENGINE WITH IPV6 SEPTEMBER 21, 2015 EYEPV6(AT)GMAIL(DOT)C ...

  8. org.apache.hadoop.security.AccessControlException

    在hdfs集群上,需要向Hdfs写入文件,控制台会输出以下错误信息: Caused by: org.apache.hadoop.ipc.RemoteException(org.apache.hadoo ...

  9. hp visual user generator

    loadrunder  自动化测试 脚本 用例

  10. error while loading shared libraries的解決方法

    我是在启动nginx的时候报这个错误,搜索这个错误时发现这篇文章,非本人(小渡博客)原创. 原文地址:http://blog.csdn.net/dumeifang/article/details/29 ...