我正在使用Siteground的基于NGINX的动态缓存反向代理,该逆向代理使用它使用请求和静态文件,我想获得访问者的IP地址,但IM无法获得任何内容,甚至在print_r($_SERVER)> 这是我尝试的. $hostname = gethostbyaddr(trim($_SERVER['HTTP_X_REAL_IP'])); $hostname = gethostbyaddr(trim($_SERVER['REMOTE_ADDR'])); 如果有人可以提供帮助? 解决方案 您必须在反向代理上设置配置,才能将真实的IP地址转发到您的Web服务器. 例如,使用nginx,您可以设置这样的标题: proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded
以下是关于 reverse-proxy 的编程技术问答
我有一个apache/乘客组合服务轨道3.x和相同的组合式轨道2.x,可通过乘客独立的反向代理.我这样做的原因是因为Rails 2.X使用Ruby的较旧版本,而不是Apache/乘客使用的Ruby. 但是,Rails 2.X应用程序中有一些PHP,乘客独立支持. (由Hongli Lai在乘客讨论小组中确认). Hongli建议将" PHP"位排除在反向代理中. 可以做到这一点,如果是这样? 编辑以显示如何设置反向代理: ServerName gtt DocumentRoot /home/purvez/www/gtt/public RailsEnv development PassengerEnabled off ProxyPass / http://127.0.0.1:3000/ ProxyPassReverse / http://127.0.0.1:3000/
cakephp(我见过的所有版本)对$_SERVER['HTTPS']进行检查,以查看是否已通过https而不是普通http提出了请求. 我正在使用nginx作为负载平衡器,后面是Apache应用程序服务器.由于SSL连接在负载平衡器处终止,因此$_SERVER['HTTPS']就CakePHP而言. 我想找到一种在应用服务器上检测HTTP的安全方法. 到目前为止,我将其放入我的CakePHP配置中: $request_headers = getallheaders(); if ( (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS']) || ( isset($request_headers['X-Forwarded-Proto']) && $request_headers['X-Forwarded-Proto'] == 'https' ) ) { $ssl = true; // overwrite en
我有一个特定的URI计划,这给我带来了麻烦.我需要运行nodejs以服务以下内容: domain.com var.domain.com var.domain.com/foo/ 我使用express.vhost()来提供子域没有问题. 但是,一旦URI类似于以下内容,我需要提供静态内容和PHP: var.domain.com/foo/bar var.domain.com/foo/bar/index.php 在这里,/bar/是我的服务器上的一些目录.从该URL降低的所有内容(例如/bar/images/favicon.ico)都将像您的典型目录方案一样.通常,我会为在某些端口上运行的节点做典型的proxy_pass,但是您可以在这里看到,我需要nodejs成为端口80上的主要处理程序,并将其传递给在其他端口上运行的nginx(或可能/更简单吗?). 使用(nginx/php)/nodejs配置可以使用这种类型的方案? 解决方案 nginx允许非常灵活的请求
通过PHP获取用户的IP地址的最准确方法是什么? 我已经阅读了很多关于它的问题和答案,但是大多数答案都是旧的,用户评论说这些方式不安全. 例如,查看这个问题(2011年):如何在PHP中获取客户端IP地址? 蒂姆·肯尼迪(Tim Kennedy)的答案包含建议使用以下建议: if (!empty($_SERVER['HTTP_CLIENT_IP'])) { $ip = $_SERVER['HTTP_CLIENT_IP']; } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; } else { $ip = $_SERVER['REMOTE_ADDR']; } ,但是当我阅读很多时,我已经看到使用X_FORWARDED_FOR是不安全的,如下注: 除非您确切知道它的作用,否则请勿使用上述代码!我有 因
这是我的情况: 1)nginx同时聆听80和443端口,并将请求转发到Mojolicious App. upstream ssltest { server 127.0.0.1:9000; } server { listen 80; listen 443 ssl; server_name ssltest.server.com; location / { proxy_pass http://ssltest/; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
这些天来运行Perl Web应用程序的一个非常流行的选择似乎是nginx WebServer代理fastcgi守护程序或已启用PSGI的Web服务器的请求(例如Starman). . 有很多疑问,为什么一个人一般会这样做(例如为什么将Nginx与Catalyst/Plack/Starman?) 答案似乎适用于两种情况(例如,允许Nginx提供静态内容,轻松重新启动应用程序服务器,负载平衡等) ) 但是,我特别对使用FastCGI与反向Proxy方法的优缺点特别感兴趣.似乎Starman被广泛认为是那里最快,最佳的Perl PSGI应用程序/Web服务器,我很难看到使用FastCGI的任何优势.两种方法似乎都支持: UNIX域插座和TCP套接字一样 fork/Process Manager样式服务器与基于非阻滞事件(例如AnyEvent)服务器一样, 信号处理/优雅重新启动 psgi 同样,任何一种选项的NGINX配置都非常相似. 那么,为什么您会选择一
我正在寻找一种可靠的方法来配置莫约利奇在apache反向代理下/app后面运行,以便url_for('/foo')实际返回/app/foo,而不仅仅是/foo(否则所有链接都会被损坏). 文档显示了一个反向的示例.但这不是我需要的,因为该应用程序应该在/应用程序下. 将ProxyPass / http://localhost:8080/变成ProxyPass /app http://localhost:8080/将引起问题,因为该应用程序生成的所有URL都会缺少/app前缀. 文档还具有有关重写的部分一个frefor_dispatch挂钩,它将在请求URL的第一部分中使用并将其用作基础.这要求将前缀附加到apache配置中的proxypass URL(ProxyPass /app http://localhost:8080/app/带有后斜线),该页面似乎在该页面上没有提及,但也许不需要("移动第一部分并从基本路径"),因为这很明显.这使得可以调用http://localh
目前,我使用nginx +乘客为我的铁路应用服务.我一直在对反向代理和一些名字弹出(鱿鱼,清漆和nginx)进行一些研究. 现在,如果我使用nginx作为我的 网络服务器我可以用它作为我的 反向代理? 一般意义是大多数 网站使用nginx代理静态 内容和apache/mongrel或 这样的动态的东西 内容.如果我想坚持 nginx,乘客设置,什么 我的建筑看起来像 引入反向代理?会吗? 是一个单独的框或实例 nginx? 如果我是 引入负载平衡器 haproxy. 最后,这些有多重要 早期选择?所以如果我最终 后悔选择(假设 清漆,因为它做得不好 使用cookie等),很容易 切换事物? 谢谢 解决方案 反向代理是位于您的实际应用程序(RAIRS)和客户端浏览器之间的服务器,并代表客户端检索文件.配置反向代理需要的只是在客户端和应用之间设置服务器;由于您已经在使用Nginx,因此也可以将其用作反向代理. 1 以下是SO: nginx既是反向代
我在将Pentaho Docker容器合并到我们的内部基础架构中有问题. 概述: 域代理在端口443(处理SSL和LDAP Auth)上聆听,并将流量重定向到Apache反向代理(在覆盖网络中作为Swarm的Docker服务站立). 反向代理是将请求重定向到Pentaho容器(也与反向代理相同的Docker服务). 配置:(仅相关行) 域代理(我们不是由我们管理):在443上倾听并重定向到反向代理码头容器 反向代理:听80 ServerAlias reverse-proxy ServerName reverse-proxy #pentaho redirect ProxyPass "ajp://pentaho_host:8009/application/pentaho" ttl=480
我正在尝试为 jenkins "> jenkins 使用iis 7.5,我的代理主要工作,但是正在遇到包含百分比符号(%)的URL问题. 无论我尝试什么,代理都坚持要在重写URL中进行解码或重新编码百分比. 这就是我想要重写URL的方式: http://my.proxy/a%2Fb -> http://my.host:8080/a%2Fb 这就是URL的实际重写的方式: http://my.proxy/a%2Fb -> http://my.host:8080/a/b - or - http://my.proxy/a%2Fb -> http://my.host:8080/a%252Fb 如何获得IIS \ arr \重写以停止重新编码我的重写URL? 我尝试过的事情: 正常的反向曲线(将URL重写为http://my.host:8080/a/b):
实际状态: http://www.example.com/mypage apache httpp :ok! https://www.example.com/mypage.com/mypage apache https https:好! 我试图修改节点程序为 var express = require('express'); var app = express(); var https = require('https'); var fs = require('fs'); var server = http.createServer(app); https.createServer({ key: fs.readFileSync("/etc/letsencrypt/live/www.example.com/privkey.pem"), cert: fs.readFileSync("/etc/letsencrypt/live/www.e
希望有人可以给我一些建议. 我们的DMZ中有一个带有WebSphere插件的Linux盒.这指向运行WebSphere Application Server的Windows框. httpd config仅包含未指定serveralias的默认virtualHost.在httpd.conf中的VirtualHost中设置了一个重定向,将任何请求转发到 service.domain.com service.domain.com/wascontext1 . plugin-cfg.xml由两个URI组设置, wascontext1 和 wascontext2 ,但只有1个被积极使用. 我想将Linux框用作完全分开的另一个应用程序的反向代理.它将具有不同的域(即 dimsim.domain.com ),但指向相同的IP. 我要为此添加另一个虚拟霍斯特,但不确定WebSphere插件的表现如何.据我了解,如果我设置了此问题并转到 dimsim.domain.com/wasc
我想收听端口范围,并以增量值(10000)的反向代理绑定. 例如,我想聆听并将其绑定到此值: example.com:20000 -> http://0.0.0.0:30000 example.com:20010 -> http://0.0.0.0:30010 example.com:20200 -> http://0.0.0.0:30200 我的nxing conf: server { listen 20000-20200; server_name example.com; location / { proxy_pass http://0.0.0.0:$server_port; ##
我正在使用Nginx 1.4.1的以下配置: server { listen 8000; server_name correct.name.gr; location /test/register { proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://127.0.0.1; } } 我想做的是用户Vist http://correct.name.gr:8000/test/register/应将其代理到端口80上的Apache. 当我访问http://correct.name.gr:8000/t
我目前将NGINX与乘客一起使用我的Rails应用程序.考虑包括等式的缓存反向代理.我还可以使用Nginx的相同实例与反向代理(在端口80上运行,服务静态和电子标记的操作),或者我需要不同的nginx实例或完全不同类型的反向代理? 谢谢! 解决方案 我认为您可以使用同一实例进行NGINX进行两者的操作,但是您必须配置应用程序以在其他端口上收听.您可以在端口8080上运行应用程序,仅收听Local主机和端口80上的反向代理. nginx配置的服务器一部分可能看起来像 server { listen 127.0.0.1:8080; server_name localhost; root /webapps/foo.com/public; passenger_enabled on; } server { listen 80; server_name www.foo.com; location / { proxy_pass http://
我有一个乘客独立运行的Rails应用程序,该应用程序正常工作.我正在运行Apache,并使用带有反向代理的VirtualHost为我的Rails应用程序服务.这有效.但是,我的资产不是通过VHOST提供的,而是给出代理错误. 我的httpd.conf ServerName greekpeep_rails.nightowls.co DocumentRoot /home/railsapps/www/greekpeep/public ProxyPass / http://127.0.0.1:4000 ProxyPassReverse / http://127.0.0.1:4000 Allow from all Options -MultiViews
我从SE上的其他问题中了解,无法在Heroku应用中使用多个端口,因为Heroku分配了具有环境变量的端口. 是否有推荐的方法来解决这个问题?我已经看到一些使用子域的代理模块: HEROKU + NODE.JS:我有一台使用多个端口的服务器.我如何让Heroku分配它们? 但是,在这篇文章中: 如何在Heroku上为应用程序创建一个子域:(例如sub.myapp.herokuapp.com) 它表明在Heroku中不再可能子域. 在我的应用程序中,我目前正在为我的Express提供我的内容,并拥有一个用于同步一些实时内容的Websocket服务器,均需要端口.我的问题是,在Heroku中是否可能进行子域?服务需要多个端口的Web应用程序的推荐方法是什么? 解决方案 所以,回答您的问题: 您不能有一个在单个Heroku Dyno上多个端口上运行的应用程序. 但是,您可以运行多个Heroku Dynos,并且每个都运行不同的命令.这使您
所以我有一个带有DC的子域,我正在尝试为SSL终止设置Haproxy.因此,我的问题是Haproxy在尝试连接并绑定到*ldaps时在LDP.EXE中出现错误.** tech.com : Server error: 53 = ldap_set_option(ld, LDAP_OPT_ENCRYPT, 1) res = ldap_bind_s(ld, NULL, &NtAuthIdentity, NEGOTIATE (1158)); // v.3 {NtAuthIdentity: User='bh-test'; Pwd=; domain = '****tech.com'} Error : ldap_bind_s() failed: Server Down. Server error: 我可以很好地ping服务器,端口636是打开和等待的.而且我正在使用该域上的域管理员的用户的信用. Haproxy服务器实际