`

LNAMP架构中后端Apache获取用户真实IP地址的2种方法

 
阅读更多

一、Nginx反向代理配置:

1、虚拟主机配置

.代码如下:

location / {
    try_files $uri @apache;
}

 

location @apache {
internal;
    proxy_pass http://127.0.0.1:8080;
    include proxy.conf;
}

location ~ .*\.(php|php5)?$  {
    proxy_pass http://127.0.0.1:8080;
    include proxy.conf;
}


2.代理配置

.代码如下:

proxy_connect_timeout 300s;#请求连接后端服务器超时时间。即在规定时间,后端必须响应前端握手请求。
proxy_send_timeout 900;#后端数据回传时间。即在规定时间,后端服务器必须将所有数据回传完毕。
proxy_read_timeout 900;#后端服务器响应时间。即连接成功,在后端排队等候处理不能超过的时间。
proxy_buffer_size 32k;#从后端服务器读取的头信息的缓冲区大小。
proxy_buffers 4 64k;#从后端服务器读取的头信息的缓冲区数目和大小
proxy_busy_buffers_size 128k;#如果服务器繁忙,可申请的proxy_buffers大小
proxy_temp_file_write_size 64k;#代理缓存临时文件大小
proxy_max_temp_file_size 128m;#代理最大缓存临时文件大小
proxy_redirect off;
proxy_hide_header Vary;
proxy_set_header Accept-Encoding '';
proxy_set_header Referer $http_referer;
proxy_set_header Cookie $http_cookie;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

 

二、Apache获取真实IP模块
获取真实IP地址有Apache有2个模块:
mod_rpaf:Apache-2.2支持;Apache-2.4不支持。网上教程很多,而且官网链接已失效
mod_remoteip:Apache-2.4自带模块;Apache-2.2支持;推荐

A、使用mod_rpaf模块
1、安装
wget http://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz
tar -xzvf mod_rpaf-0.6.tar.gz
cd mod_rpaf-0.6/
/usr/local/apache/bin/apxs  -i -c -n mod_rpaf-2.0.slo mod_rpaf-2.0.c
2、添加Apache配置

.代码如下:

vi  /usr/local/apache/conf/httpd.conf
Include conf/extra/httpd-rpaf.conf
vi /usr/local/apache/conf/extra/httpd-rpaf.conf

 

LoadModule rpaf_module        modules/mod_rpaf-2.0.so
RPAFenable On
RPAFsethostname On
RPAFproxy_ips 127.0.0.1 10.8.0.110 # 代理服务器的ip地址(记得做相应修改)
RPAFheader X-Forwarded-For


备注:RPAFproxy_ips后面添加代理服务器的ip地址,有几个填几个
3.测试

.代码如下:

# /usr/local/apache/bin/apachectl -t
# /usr/local/apache/bin/apachectl restart
# 看日志是否获取到了真实IP


B、使用mod_remoteip模块
1、Apache-2.2下配置mod_remoteip如下:
1)、安装

.代码如下:
wget https://github.com/ttkzw/mod_remoteip-httpd22/raw/master/mod_remoteip.c
/usr/local/apache/bin/apxs -i -c -n mod_remoteip.so mod_remoteip.c


2)、修改配置文件:

.代码如下:

vi /usr/local/apache/conf/httpd.conf
Include conf/extra/httpd-remoteip.conf
vi /usr/local/apache/conf/extra/httpd-remoteip.conf
LoadModule remoteip_module modules/mod_remoteip.so
RemoteIPHeader X-Forwarded-For
RemoteIPInternalProxy 127.0.0.1


3)、测试:

.代码如下:

# /usr/local/apache/bin/apachectl -t
# /usr/local/apache/bin/apachectl restart
# 看日志


2、Apache-2.4配置mod_remoteip
自带mod_remoteip模块不需要安装,只需要修改日志格式

.代码如下:

LogFormat "%h %a %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %a %l %u %t \"%r\" %>s %b" common
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedi


在日志格式中加上%a

 

分享到:
评论

相关推荐

    centos源码安装LNAMP环境.doc

    在Linux环境中,构建LNAMP(Linux + Nginx + Apache + MySQL + PHP)服务器是常见的Web服务部署方式。本文将详细介绍在wdOS系统下如何通过源码编译安装LNAMP环境,该系统基于CentOS并预装了一些基础的Web应用环境。 ...

    lnamp环境编译安装(服务器环境).rar

    在IT行业中,构建一个LAMP(Linux、Apache、MySQL、PHP)或LNMP(Linux、Nginx、MySQL、PHP)环境是常见的服务器配置过程,主要用于搭建动态网站和Web应用程序。这里我们关注的是"lnamp环境编译安装(服务器环境)....

    Linux,Nginx,Apache,MySql,PHP生产环境一键安装包_lnamp.zip

    Linux,Nginx,Apache,MySql,PHP生产环境一键安装包_lnamp

    Linux_NginxApache_MySql_PHP_一键安装(抽空再整理完善下)_lnamp.zip

    Linux_NginxApache_MySql_PHP_一键安装(抽空再整理完善下)_lnamp

    lanmp v2.5一键安装包(包括lamp,lnmp,lnamp安装)

    lanmp一键安装包是wdlinux官网2010年开始推出的lamp,lnmp,lnamp(apache,nginx,php,mysql,zend,eAccelerator,pureftpd)应用环境的快速简易安装包,执行一个脚本,整个环境就安装完成就可使用,快速,方便易用,安全稳定...

    Linux+Apache+Nginx+MySQL+PHP_前后端_部署_生产环境

    因此,结合Apache和Nginx的优势,形成一种新的部署方案——LANMP/LNAMP,即Linux+Apache+Nginx+MySQL+PHP的组合,成为了一种流行的选择。 #### 三、方案介绍 ##### 1. 环境准备 - **操作系统**: CentOS 5及以上...

    lnamp:一键源码编译安装LNMP LAMP Tomcat

    一键编译安装LNMP LAMP支持CentOS6,CentOS7,RHEL6,RHEL7启用交换启用iptables修改SSH服务端口使用OpenSSL 1.1.1构建的Nginx / 1.16.1 Apache2.2.34工作模式为PreforkMPM(最终版本2.2.34已于2017年7月发布) ...

    lnmp:自用lnamp

    在LNMP架构中,通常选择Debian、Ubuntu或CentOS等发行版。 2. Nginx:Nginx是一款高性能的HTTP和反向代理服务器,它的特点是并发能力强,内存占用少,特别适合处理静态文件和高并发请求。Nginx可以通过配置文件灵活...

    linux运维.pdf

    - **用户权限**:理解Linux中的用户、组的概念,学会使用`chown`、`chmod`等命令来管理文件权限。 - **网络配置**:学习如何配置网络接口、IP地址、子网掩码等,确保Linux系统能够正常接入互联网。 #### 三、Linux...

    Linux运维从入门到高级全套案例教程.pdf

    深入篇则聚焦于更高级的Web服务器构建,如Nginx、Tomcat/Resin Java服务器的安装和配置,以及LNAMP架构配置、DNS域名解析服务器构建、MySQL主从高可用架构、LVS+Keepalived负载均衡和Squid缓存服务器配置等。...

    Linux运维从入门到高级Linux全套案例教程

    DHCP服务器用于自动分配IP地址;Samba服务器可实现Linux与Windows系统的文件共享;NFS服务器则用于网络文件系统的共享;FTP服务器用于文件传输;Apache WEB服务器用于搭建网站;MySQL服务器用于数据库服务;LAMP架构...

    wdOS-1.0安装教程

    此外,配置网卡和设置IP地址也是安装过程中的重要环节,用户可以根据需要选择是否配置IPv4或IPv6地址。 总的来说,wdOS-1.0是一个为Web服务量身定制的Linux发行版,旨在提供便捷的管理和高效的服务器运行环境。其...

    lnmp_shell:Lnamp(LinuxNginxApacheMySQLPHP)为CentOS,Debian,Ubuntu和RHEL安装Shell脚本

    LNAMP 是一种常用的 Web 服务架构,由 Linux 操作系统、Nginx(或 Apache)Web 服务器、MySQL 数据库管理系统和 PHP 解释器组成。这种组合常用于搭建动态网站和应用程序,因为它们各自都具有高效、稳定和易用的特点...

    Linux运维从入门到高级全套案例v3

    - **LNAMP高性能架构配置**:优化Linux、Nginx、Apache、MySQL的组合,提升系统性能。 - **构建DNS域名解析服务器**:设置DNS服务,解析域名到IP地址。 - **MySQL主从高可用架构**:构建MySQL主从复制,提高...

    Linux 运维入门到高级.pdf

    - Kickstart 是一种自动化安装 Linux 的方法。 - 创建 Kickstart 脚本文件 (`ks.cfg`),并通过 PXE 引导或本地介质进行安装。 #### 四、Linux 编程篇 **4.1 Linux Shell 编程** - **4.1.1 Shell 编程简介** -...

    lanmp v2.2一键安装包

    5. **访问控制面板**:安装完成后,可以通过浏览器访问`http://IP:8080`来登录WDCP控制面板,其中IP地址为服务器的公网IP地址。 #### 四、扩展功能与自定义配置 1. **Memcached缓存服务**:通过下载并运行`...

    Linux入门到高级

    - **LNAMP高性能架构**: - Linux、Nginx、MySQL、PHP的组合。 - 更侧重于Nginx的使用。 - **DNS域名解析服务器**: - 将域名转换为IP地址。 - 基础网络服务之一。 - **MySQL主从高可用架构**: - 提供数据冗余和...

Global site tag (gtag.js) - Google Analytics