`
liuyunlu
  • 浏览: 24777 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

nginx 反向代理 取得真实IP和域名

阅读更多

nginx反向代理后,在应用中取得的ip都是反向代理服务器的ip,取得的域名也是反向代理配置的url的域名,解决该问题,需要在nginx反向代理配置中添加一些配置信息,目的将客户端的真实ip和域名传递到应用程序中。

 

nginx反向代理配置时,一般会添加下面的配置:

      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header REMOTE-HOST $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

 

其中第一行关于host的配置,是关于域名传递的配置,余下跟IP相关。

 

php中取得客户端真实IP

Php代码  收藏代码
  1. /** 
  2.  * 获取客户端ip 
  3.  */   
  4.  function getClientIP() {  
  5.     $ip = "unknown";  
  6.     /* 
  7.      * 访问时用localhost访问的,读出来的是“::1”是正常情况。 
  8.      * ::1说明开启了ipv6支持,这是ipv6下的本地回环地址的表示。 
  9.      * 使用ip地址访问或者关闭ipv6支持都可以不显示这个。 
  10.      * */  
  11.     if (isset($_SERVER)) {  
  12.         if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])) {  
  13.             $ip = $_SERVER["HTTP_X_FORWARDED_FOR"];  
  14.         } elseif (isset($_SERVER["HTTP_CLIENT_ip"])) {  
  15.             $ip = $_SERVER["HTTP_CLIENT_ip"];  
  16.         } else {  
  17.             $ip = $_SERVER["REMOTE_ADDR"];  
  18.         }  
  19.     } else {  
  20.         if (getenv('HTTP_X_FORWARDED_FOR')) {  
  21.             $ip = getenv('HTTP_X_FORWARDED_FOR');  
  22.         } elseif (getenv('HTTP_CLIENT_ip')) {  
  23.             $ip = getenv('HTTP_CLIENT_ip');  
  24.         } else {  
  25.             $ip = getenv('REMOTE_ADDR');  
  26.         }  
  27.     }  
  28.     if(trim($ip)=="::1"){  
  29.         $ip="127.0.0.1";  
  30.     }  
  31.     return $ip;   
  32. }  

 

java取得客户端真实IP:

Java代码  收藏代码
  1. public String getClientIP(HttpServletRequest request) {   
  2.     String ip = request.getHeader("x-forwarded-for");   
  3.     if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {   
  4.         ip = request.getHeader("Proxy-Client-IP");   
  5.     }   
  6.     if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {   
  7.         ip = request.getHeader("WL-Proxy-Client-IP");   
  8.   
  9.     }   
  10.     if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {   
  11.         ip = request.getRemoteAddr();   
  12.     }   
  13.     return ip;   
  14. }   

 

 

php取得域名:

 

Php代码  收藏代码
  1. $_SERVER['SERVER_NAME'];  

 

 

java取得域名:

 

Java代码  收藏代码
  1. request.getServerName()  

 

分享到:
评论

相关推荐

    一分钟搞定 Nginx反向代理 nginx域名代理

    同一ip(都是80端口)可以绑定无数个域名 配置简单 里面包含一个配置文档:配置文档.doc 看一遍 大部分人都会设置了。 内容如下: NGNIX配置文档 1.解压文件到相应文件夹下(我解压到D:/下) (这里是图片) 目录...

    Nginx反向代理不能访问项目的解决办法

    ### Nginx反向代理不能访问项目的解决办法 在配置Nginx作为反向代理服务器时,有时会遇到可以通过域名正常访问Linux系统下部署的Tomcat服务器,但是却无法访问到部署在Tomcat上的具体项目的情况。这种情况通常是...

    docker 安装 wordpress,通过nginx反向代理,绑定域名,配置https

    Docker 安装 WordPress,通过 Nginx 反向代理,绑定域名,配置 HTTPS 在本文中,我们将详细介绍如何使用 Docker 安装 WordPress,并通过 Nginx 反向代理,绑定域名,配置 HTTPS。 首先,我们需要安装 Docker,若您...

    Nginx服务器作反向代理实现内部局域网的url转发配置

    然后k兄就提议可以在内网搭建个nginx反向代理服务器,将nginx反向代理服务器的80映射到外网IP的80,这样指向到公司外网IP的域名的HTTP请求就会发送到nginx反向代理服务器,利用nginx反向代理将不同域名的请求转发给...

    https通信nginx反向代理443端口

    在IT行业中,HTTPS通信是确保网站数据安全传输的重要手段,而Nginx作为一款高性能的HTTP和反向代理服务器,常被用来实现这种安全通信。本文将深入探讨如何通过Nginx配置HTTPS服务器,实现443端口的反向代理,以及与...

    nginx正向代理与反向代理详解

    本文将详细介绍Nginx如何实现正向代理和反向代理,以及这两种代理方式的应用场景。 **正向代理** 正向代理的主要作用是让内部网络中的设备(如服务器B)通过一个具有外部网络访问权限的设备(如服务器A)来访问...

    Nginx配置文件——一级域名、二级域名

    本文将深入探讨如何通过Nginx配置文件来设置一级域名和二级域名,以及如何利用Nginx的反向代理功能。 首先,了解一级域名和二级域名的概念至关重要。一级域名是互联网上顶级的域名,如.com、.org、.net等。二级域名...

    基于Nginx 反向代理获取真实IP的问题详解

    解决该问题,需要在Nginx反向代理配置中添加一些配置信息,目的将客户端的真实IP和域名传递到应用程序中。同时,也要修改获取IP地址的方法。 但是需要注意的是,通过Nginx反向代理后,如果访问IP通过了几层代理,...

    nginx反向代理配置.conf

    nginx反向代理配置文件,域名映射ip+端口,地址栏输入域名即可跳转对应的IP+端口

    Nginx反向代理工作原理简介与配置详解-李雄

    本文将深入介绍Nginx反向代理的工作原理,并提供详细的配置步骤。 首先,理解反向代理的概念至关重要。在传统的正向代理中,用户通过代理服务器访问目标网站,代理服务器隐藏了真实用户的IP地址。而在反向代理中,...

    Nginx的反向代理实例详解

    (1)在windows系统的host文件进行域名和ip对应关系   (2)在Nginx进行请求 注意: 端口乤对外开放。  二、反向代理实例 2 1、实现效果 (1)使用Nginx反向代理,根据访问的路径跳转到不同端口的服务中,Nginx...

    cdn软件高级版(nginx反向代理方式实现)

    **一、Nginx反向代理原理** 反向代理是指客户端请求到达Nginx服务器时,Nginx并不直接返回内容,而是根据配置将请求转发到实际的后端服务器,获取内容后再返回给客户端。这样做的好处包括负载均衡、安全防护以及提高...

    nginx实现Tomcat反向代理

    Nginx以其高性能、低资源消耗著称,适合处理静态内容和反向代理任务;而Tomcat作为Java应用服务器,擅长运行Java Web应用程序。本篇文章将详细介绍如何利用Nginx实现对Tomcat的反向代理,以及如何配置HTTPS,以提升...

    nginx反向代理 linux版.zip

    Nginx反向代理是其核心功能之一,能够帮助优化网络流量管理,提高网站响应速度和负载均衡能力。以下将详细介绍Nginx反向代理的基本概念、配置以及在Linux环境下的应用。 **1. Nginx反向代理概念** 反向代理是一种...

    Nginx反向代理1

    【Nginx反向代理】是网络服务器架构中一种重要的技术,主要用于实现用户访问数据的调度和压力分担,从而提升系统的性能、可伸缩性和高可用性。Nginx作为一个高性能的HTTP和反向代理服务器,常被用于构建集群环境,...

    使用OneinStack配置Nginx反向代理、多网站配置、多域名配置

    《使用OneinStack配置Nginx反向代理与多网站多域名配置详解》 Nginx作为一款高性能的HTTP和反向代理服务器,常用于网站的负载均衡和内容分发,其灵活性和稳定性深受运维人员喜爱。在OneinStack框架下配置Nginx,...

    详解Nginx反向代理WebSocket响应403的解决办法

    在Nginx反向代理一个带有WebSocket功能的Spring Web程序(源代码地址 )时,发现访问WebSocket接口时总是出现403响应,Nginx的配置参考的是 官方文档 : http { // ssl 相关配置 ... map $http_upgrade $...

    nginx反向代理配置实现

    总结,Nginx反向代理是实现高效Web服务的关键技术,通过正确配置可以提升系统的稳定性和性能。结合Tomcat这样的Java应用服务器,可以构建出强大的Web应用程序平台。在实际操作中,应根据具体需求进行调整和优化,...

    Nginx 同IP 多域名 HTTPS SSL 配置

    IIS7.5下同IP多域名配置SSL, IIS 7.5 以下版本不支持多域名共用443端口 SSL 服务,采用nginx 单独处理来自443端口的请求,从而实现多域名 SSL 附件包含,图文设置nginx, nginx免安装包,可直接使用,已支持SNI(Server ...

Global site tag (gtag.js) - Google Analytics