linux下配置nginx反向代理例子


 

官方說明:

例子:

虛擬機ip:192.168.85.3,物理機VMware Network Adapter VMnet8  ip:192.168.85.1

1,准備tomcat

准備一tomcat,端口,8080

 

准備一Jsp,用於獲取客戶端真實IP和nginx IP ,test.jsp:

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

public class IpUtils {
    private IpUtils() {
    }

    public static String getIpAddr(HttpServletRequest request) {
        if (request == null) {
            return "unknown";
        }
        String ip = request.getHeader("x-forwarded-for");
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("Proxy-Client-IP");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("X-Forwarded-For");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("WL-Proxy-Client-IP");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("X-Real-IP");
        }

        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getRemoteAddr();
        }
        return ip;
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM