Articles of 反向代理

如何在使用CORS头文件时将基本身份validation添加到apache代理?

背景 我使用grafana来显示我们的服务器度量的graphics。 Grafana是一个JS应用程序,在我们的例子中是从石墨中获取数据并在elasticsearch中存储search查询。 所有这三个服务都有自己的虚拟主机,虽然现在在同一台机器上。 由于JS规则,我添加了CORS头到石墨和elasticsearch-vhost。 graphite-vhost是WSGI的路由请求,因为石墨是一个python / django应用程序。 elasticsearch-vhost是将数据从端口443转发到localhost:9200的反向代理。 这有助于不直接向世界开放elasticsearch服务,也给我一个添加CORS头的地方。 到目前为止,这是有效的:grafana可以同时与两个服务进行通信。 出现问题 我添加了Basic Auth身份Basic Auth的grafana和石墨主机。 这些工作正常,如预期。 Grafana能够检索和显示数据。 当将Basic Auth添加到elasticsearch-vhost时,我遇到了问题。 虽然我可以在<Location / >块中添加Auth设置,但似乎禁用了CORS头。 激活身份validation后,我可以在浏览器或curl中使用elasticsearch。 但是,grafana无法在elasticsearch中searchconfiguration的仪表板。 search似乎更复杂,一个GET ,因为grafana开始与OPTIONS -request。 这失败了一个401错误。 有趣的是,Grafana可以检索已知的仪表板(这是一个简单的GET )。 我没有提到在Headers中限制HTTP方法。 所以,总结一下: How can I add basic auth to an apache proxy while using CORS headers? 如果你想看看Apache的configuration,请告诉我哪些部分,我不想张贴三个相当长的虚拟主机“只是可以肯定”。

用于端口转发的Apache vhostconfiguration

我正在尝试在Apache中获得反向代理function。 我正在使用Windows Server 2012上的Bitnami RubyStack。以下configuration使Apache甚至无法启动 – error.log似乎没有任何问题。 <VirtualHost *:80> ServerName mydomain.nl ServerAlias mysub.mydomain.nl # this is a Rails application DocumentRoot "C:/Bitnami/rubystack-2.0.0-17/projects/dummy" RewriteEngine On <Proxy balancer://thinservers> BalancerMember http://127.0.0.1:3001 </Proxy> # Redirect all non-static requests to thin RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f RewriteRule ^/(.*)$ balancer://thinservers%{REQUEST_URI} [P,QSA,L] # Custom log file locations ErrorLog "C:/Bitnami/rubystack-2.0.0-17/projects/dummy/log/error.log" CustomLog "C:/Bitnami/rubystack-2.0.0-17/projects/dummy/log/access.log" </VirtualHost> 我想要实现的是将端口80上的传入请求转发到3001.我认为可能有问题,因为Bitnami文档根目录也被configuration。 我在Apache中并不舒服。 我已经包含了我需要的代理function的模块。 […]

使用nginx作为反向代理时,Apache上的REMOTE_ADDR和SERVER_ADDR错误

我在Mac OS X上,在VirtualBox中运行Ubuntu。 Mac OS可以在IP 192.168.0.100和Ubuntu 192.168.0.123(使用VirtualBoxnetworking设置中的“桥接适配器”选项)的本地networking中访问。 在Ubuntu安装中,我有nginx(端口80)作为Apache 2.4(端口8081)的反向代理。 这工作正常,如果我在Mac OS中打开浏览器并指向192.168.0.123,它将通过nginx打开Apache提供的文件。 问题是,即使我已经启用了RPAF模块,我在Apache上获得了服务器和远程IP地址的意外值。 从Mac浏览器访问时,我期望的值是: SERVER_ADDR = 192.168.0.123 # Apache server IP, which is the Ubuntu IP REMOTE_ADDR = 192.168.0.100 # The Mac OS X IP 但是,如果我将nginx设置为proxy_pass 192.168.0.123:8081我会得到: SERVER_ADDR = 192.168.0.123 REMOTE_ADDR = 198.168.0.123 设置proxy_pass 127.0.0.1:8081给我正确的远程地址(191.168.0.100),但127.0.0.1作为服务器地址。 任何想法如何获得预期的结果? ( 编辑 )我使用默认的RPAF设置: <IfModule rpaf_module> RPAF_Enable On RPAF_ProxyIPs 127.0.0.1 RPAF_SetHostName […]

反向代理Apache重写规则不起作用

我有一个Apache的反向代理,我试图做一个规则redirectexample2的几个url到example1,但我的重写规则不起作用。 我已经在example2的虚拟主机中尝试了这一点: ProxyPass / https://example1.com/index2.html ProxyPassMatch ^[A-Za-z0-9]$ https://example1.com/news-$1 第一个规则的工作,但不是第二个与ProxyPassMatch,当我去https://example2.com/1test05 ,返回一个404错误,但直接访问https://example1.com/news-1test05工作。 任何想法?

Nginx恢复到sslv3

我使用nginx作为反向代理,我试图closuressslv3的支持。 我在这里和其他各种网站上都find了各种答案。 他们都build议我所需要做的就是在我的nginx.conf中添加如下的默认http块 ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers "ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS:!RC4"; ssl_prefer_server_ciphers on; 我已经完成了,甚至尝试从https://cipherli.st/这个完整的configuration ssl_ciphers "AES128+EECDH:AES128+EDH"; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"; add_header X-Frame-Options DENY; add_header X-Content-Type-Options nosniff; ssl_session_tickets off; # Requires nginx >= 1.5.9 ssl_stapling on; # Requires nginx >= 1.3.7 ssl_stapling_verify on; # Requires nginx => 1.3.7 resolver […]

基于DNS名称的NAT路由(反向TCP代理?)

介绍 我有一个路由器,运行pfSense(可以是任何东西,因为它是VMware上的一个虚拟机,所以如果解决scheme需要其他东西,我没事),在它后面有多个虚拟机(NAT)。 我想完成什么 我想使用某种types的代理来使用具有1个IP的多个服务,最好基于DNS。 例如; 在mail.domain.com上运行一个邮件服务器(和webaccess的网站),在www.domain.com上运行一个网站,并在ftp.domain.com上运行一个FTP服务器,但都是不同的虚拟机。 所以基本上: Hostname Internal NAT IP Port www.domain.com 192.168.1.10 80 mail.domain.com 192.168.1.11 25 mail.domain.com 192.168.1.11 80 mail.domain.com 192.168.1.11 443 ftp.domain.com 192.168.1.12 21 所以我想使用HAProxy,但HAProxy只允许HTTP通信,而不是“常规”TCP通信(基于DNS名称)。 我想要所有的端口(包括TCP和UDP,但是如果TCP是唯一可能的,那么也可以)redirect到相应的虚拟机。

Nginx随机拒绝SSL连接

我正在运行一个Nginx反向代理的网站https://telerandom.com (NodeJS服务器,端口9576)。 它通常工作,但有时它会开始拒绝来自某些用户的所有SSL连接(而对于其他人而言,这是完全正常的)。 这个拒绝SSL连接的时间通常会持续大约45分钟,然后事情恢复正常。 我注意到同一networking上的设备(例如我的笔记本电脑和同一WiFinetworking上的手机)同时遇到这些故障。 但是,如果我要断开手机与WiFi的连接并使用手机数据,则可以正常连接到网站。 端口80和443都在服务器上打开。 当连接被拒绝时,我在错误日志中得到这些消息: 2015/07/24 20:36:19 [debug] 1695#0: *92 post event 0000000002327BB0 2015/07/24 20:36:19 [debug] 1695#0: *92 post event 000000000233B3C0 2015/07/24 20:36:19 [debug] 1695#0: *92 delete posted event 000000000233B3C0 2015/07/24 20:36:19 [debug] 1695#0: *92 http run request: "/socket.io/?EIO=3&transport=websocket&sid=_32mgWR6o50vOl7pAAAC" 2015/07/24 20:36:19 [debug] 1695#0: *92 http upstream process upgraded, fu:1 2015/07/24 20:36:19 [debug] […]

在Nginx SSL终止中将所有无效的SSL请求redirect到http

在我的后端服务器作为反向代理之前,我使用nginx进行SSL终止。 我想redirect所有无效的https域(不是SSL),redirect到Nginx的SSL终止http。 我不想为所有网站做这个单独的每一个,我想要一个通用的解决scheme,所有的请求没有HTTPS,但打开与HTTPS和redirect到HTTP自动。 我有nginx的SSL终止。 谢谢

如何阻止未经授权的网站复制/镜像

我正在运行一个vps服务器(nginx)的网站。 我最近发现了几个与我的网站100%重复的网站。 即使当我更改文章或从我的服务器删除文件,这些其他网站会自动更新我所做的更改! 它看起来像有人没有授权镜像网站。 由于这个原因,它真的伤害了我的SEO结果。 这是一个反向代理攻击? 我怎样才能防止某人镜像我的网站?

如何设置dynamic后端服务器的Apache 2反向代理?

我想将Apache 2设置为使用基于名称的虚拟主机的反向代理来决定如何将请求路由到后端服务器。 很简单。 问题是这些后端服务器可能会以dynamic方式添加和删除。 我的第一个想法是以编程方式重新编写一个Apacheconfiguration文件,并在每次后端服务器启动或closures时调用apachectl graceful 。 这似乎不是正确的解决scheme。 什么是更好的方法来完成这个? 我需要能够适当地将名称的处理转移到不同的后端服务器。 例如,后端服务器A可能正在处理对example.com的请求。 监视过程可能会决定后端服务器A是陈旧的(内存使用量过多,有新版本的服务器代码来处理example.com等)。 监控进程启动Backend-Server-B,后者将很快处理对example.com的请求。 Apache应该将任何对example.com的新请求指向Backend-Server-B,但是允许Backend-Server-A当前正在处理的任何待处理请求在我的监控进程closuresBackend-Server-A之前完成。 ( 注 :我最初发布在堆栈溢出。)