Apache2 and Nginx Server Address in Header
Recently I get a request which needs to send the server IP address(not client IP address) from Apache2 to Nginx, finally to our lambda Function.
It is not that easy to do this, first of all, that machine has about 4 IP, I have them all listed in the /etc/hosts, I do not know how all these are set, but I have all the IP in /etc/hosts.
So first step, apache2 need to have it. Pass that to nginx, nginx need to forward that to lambda.
A website which can help us to check the request header
http://requestbin.fullcontact.com
Nginx Setting
Easy thing first, How nginx forward the header from apache2 to lambda is easy, this configuration will do the work.
# redirect traffic to aws lambda
resolver 8.8.8.8;
set $ocpServer 'https://proxy.sillycat.com';
location / {
if ( $http_user_agent = 'oldclients' ) {
proxy_pass http://localhost:5080;
}
if ( $http_user_agent != 'oldclients' ) {
proxy_pass $ocpServer;
}
#for testing the header, comments out
#proxy_pass http://requestbin.fullcontact.com/195blxxxx;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass_request_headers on;
proxy_ssl_server_name on;
}
proxy_pass_request_headers on; will do the work.
How Apache2 Get the IP
Here is a detail situation in my case. The Apache2 Configuration is not hard code in my case, it is generate by Python Script. So my idea is Python Script can find the IP first, then write that IP in the configuration file there. So it will be simple configuration in Apache2
RequestHeader set X-Sillycat-Serveraddr ‘198.168.1.159'
How Python get the IP
import socket
try:
SILLYCAT_EXTERNAL_IP = socket.gethostbyname(“sillycat-external-ip")
except:
SILLYCAT_EXTERNAL_IP = ""
pass
"""
RequestHeader set X-Sillycat-Serveraddr {sillycat_external_ip}
""".format(sillycat_external_ip=SILLYCAT_EXTERNAL_IP)
That is it, it will work.
References:
http://requestbin.fullcontact.com
https://stackoverflow.com/questions/154441/set-up-an-http-proxy-to-insert-a-header
https://serverfault.com/questions/391554/forward-custom-header-from-nginx-reverse-proxy
https://stackoverflow.com/questions/19751313/forward-request-headers-from-nginx-proxy-server
分享到:
相关推荐
Windows版nginx去掉header中server后面的信息(nginx版本1.21.1) 使用方法: 1、关闭nginx服务 2、将新的nginx.exe替换原有的exe文件 3、重启nginx服务
结合提供的文件名,我们可以推断,`2nginx response.png`可能展示了Nginx添加自定义响应头的结果,`1request header中添加apiversion.png`可能描绘了在请求头中添加`apiversion`字段的过程,而`Nginx居然还能实现...
Apache2Nginx是一个开源的linux下运行的命令行工具.它可以把apache 配置文件转换成对应的nginx 配置文件.对于一般的功能. 比如目录 url重写.这都从测试来看.基本上不存在问题.对于不能转换的.会有注释在转换好的配置...
一个开源的Linux下运行的命令行工具,能将Apache的配置文件转换成相应的Nginx的配置文件。本工具能自动将Apache Web服务器的配置文件转化成Nginx的配置文件,减少...官网:https://github.com/leeleander/apache2nginx
在很多场景下,Nginx被用作替代Apache服务器的选择,尤其是在高流量网站和需要负载均衡的环境中。本实战指南旨在探讨如何通过Nginx实现高性能的Web服务,以提升网站的响应速度和稳定性。 一、Nginx与Apache的性能...
Apache的主要配置文件是`/etc/apache2/apache2.conf`(Ubuntu)或`/etc/httpd/conf/httpd.conf`(CentOS/RHEL)。要修改默认站点,编辑`/etc/apache2/sites-available/000-default.conf`或`/etc/httpd/conf.d/...
Apache Tomcat JBOSS Nginx区别 Apache Tomcat 和 JBOSS 是两种不同的服务器软件,而 Nginx 是一种高性能的 HTTP 服务器。下面我们来详细比较它们的区别: 一、Apache 和 Tomcat Apache 是一个 Web 服务器,...
2. **负载均衡器模式**:Nginx作为负载均衡器,Apache作为应用服务器,Nginx根据预设的负载均衡算法分发请求,同时可以监控后端服务器的状态,当某台Apache服务器出现问题时,自动停止向其发送请求。 3. **缓存加速...
Apache、Nginx和Resin都是在Web服务器领域中广泛使用的软件。Apache是经典的HTTP服务器,Resin是一款高性能的Java应用服务器,而Nginx以其高效的反向代理和负载均衡能力著称。将这三者结合使用,可以构建出一个高...
【Apache2Nginx简介】 Apache2Nginx(A2N)是一个专为Linux环境设计的开源命令行工具,其主要功能在于帮助用户平滑地将原有的Apache配置转换为Nginx配置。这个工具旨在简化迁移过程,使得在性能优化、负载均衡或...
### Apache与Nginx的区别详解 #### 一、概述 在服务器领域,Apache与Nginx作为两大主流的Web服务器软件,在技术实现上各有特点,适用于不同场景的需求。本文将从多个角度对这两种服务器进行比较分析,帮助读者理解...
keepalived配置haproxy,apache2,nginx,监听配置
这里我们关注的是两种常见的服务器环境配置:Apache和Nginx,这两种服务器...Apache和Nginx各有优缺点,选择哪种取决于项目需求和个人偏好。在实际操作中,务必参考官方文档和社区资源,以确保环境的稳定性和安全性。
学习Nginx HTTP Server.pdf 清晰版
Apache、Nginx 和 Tomcat 是在 Web 服务器领域中常用的三个组件,它们各自承担着不同的职责,并且经常被组合使用以实现高效、稳定的网站部署和应用服务。 Apache HTTP Server 是世界上最广泛使用的开源 Web 服务器...
This book is a detailed guide to setting up Nginx in different ways that correspond to actual production situations: as a standalone server, as a reverse proxy, interacting with applications via ...
### Nginx 作为 Apache 和 JBoss 的替代方案 #### 背景介绍 随着互联网技术的不断发展,网站流量的增长对服务器性能提出了更高要求。Apache 和 JBoss 是两种广泛使用的 Web 服务器和应用服务器,但在高并发场景下,...