Questions tagged «reverse-proxy»

反向代理是一种代理服务器,可以从一组特定的特定客户端服务器中获取资源。出于安全原因或由于缺少可用的公共IP地址而在不直接向Web服务器公开内容的情况下使用此方法。


6
什么是反向代理?
我知道什么是代理,但是我不确定什么是反向代理。在我看来,它可能类似于负载均衡器。那是对的吗?

3
如何在Nginx反向代理中重写Set-Cookie的域部分?
此问题已从堆栈溢出迁移,因为可以在服务器故障时回答。 迁移 8年前。 我有一个简单的nginx反向代理: server { server_name external.domain.com; location / { proxy_pass http://backend.int/; } } 问题在于Set-Cookie响应头包含;Domain=backend.int,因为后端不知道它是否被反向代理。 如何使nginx重写Set-Cookie响应标头的内容,替换;Domain=backend.int为;Domain=external.domain.com? 路过Host头不变的是不会在这种情况下的一个选项。 Apache httpd拥有此功能已有一段时间了,请参阅参考资料ProxyPassReverseCookieDomain,但是我似乎找不到在nginx中实现此功能的方法。

3
从Nginx反向代理转发自定义标题
我有一个Nginx Web服务器充当反向代理,将请求转发到Apache进行其他处理(我恳求您不要问为什么)。我有一个尝试附加自定义标头的请求,我希望nginx将该自定义标头转发到Apache,以便我可以在应用程序中对其进行处理。 我已经浏览了HttpProxyModule文档,但是即使我在正确的位置,它们也没有很好的描述性(很可能是我没有)。 如何获取Nginx转发X-CUSTOM-REFERRER标头?而且,如果可能的话,我希望它可以随传入的任何自定义标头一起转发。如果后者要求不高,那么前者就可以满足我当前的需求。 如您所见,我是nginx的新手,所以补救版本会有所帮助。 谢谢。 更新 我现有配置中的相关代码段: location / { proxy_pass http://preview; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # proxy_set_header X-Custom-Referrer $x_custom_referrer; }


6
扩展软件负载平衡器的典型方法是什么?
我经常看到一堆应用程序服务器前面带有SLB /反向代理的Web应用程序体系结构。 如果到SLB的连接数需要太多资源才能使单个 SLB有效处理,会发生什么情况?对于一个具体的但举足轻重的示例,请考虑200万个持久HTTP连接。显然,单个 SLB无法处理此问题。 什么是缩放的建议配置了一个SLB? 创建LB的组/集群是否很典型?如果是这样,客户端负载如何在LB组之间分配?

2
Nginx Config:前端反向代理到另一个端口
我有一个小型Web服务器,可在端口5010而不是80上提供请求。 我想使用nginx作为前端代理,以在端口80上接收请求,然后让这些请求由端口5010处理。 我已经成功安装了nginx,它可以在Ubuntu Karmic上顺利运行。 但是,我尝试重新配置默认的nginx.conf失败。 我尝试在服务器指令中包括端口5010的listen参数。 我也尝试过proxy_pass指令。 为了只进行端口转发,需要对更改做出任何建议或需要设置指令。


2
Nginx添加标头条件为upstream_http_变量
我在Nginx上有一个反向代理,可以代理很多站点。我最近为所有启用SSL的网站启用了HTTP Strict Transport Security。我现在有一个不想启用此功能的站点。 我以为如果上游已经给我发送了Strict-Transport-Security-header,我将做一个简单的检查,否则,只需添加一个。这样,我的上游可以发送一个STS标头,其中包含该标头,max-age=0以避免通过代理启用HSTS。 我以为我会按照以下方式更改配置: location / { proxy_pass http://webservers; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-Proto "https"; if ($upstream_http_strict_transport_security = "") { add_header Strict-Transport-Security "max-age=15552000"; } } 但是,可能是因为如果是邪恶的话,这是行不通的。我尝试了很多其他方法来确保变量确实存在(这种情况),但是似乎没有任何帮助。 我该如何进行这项工作?


3
nginx作为上游SSL的反向代理
我正在为内部API构建代理,以允许客户端连接而不必安装自签名证书。 客户端(仅在内部构建,拥有和使用)将通过SSL连接到nginx框,在这里我正在使用XSendfile在应用程序级别(Rails应用程序)验证凭据。如果凭据有效,则将连接向上传递回Nginx,在此Nginx使用proxy_pass将连接发送到上游服务器。 现在,这对于标准的HTTP连接非常有用,但是我试图弄清楚如何将我们的证书添加到组合中。 这个问题几乎与此相同,但是证书要求不佳。 nginx甚至有可能吗?有更好的解决方案吗? 我还要从客户端-> nginx中获取http,并从nginx到API获得自签名证书。

1
Nginx:如何完全禁用请求正文缓冲
我正在尝试在Ubuntu盒子上设置Madsonic,并在其前面运行Nginx。问题是,当我尝试通过Web界面上传内容时,我始终收到此警告: 31115#0: *14 a client request body is buffered to a temporary file 这也解释了为什么上传窗口上的进度条不起作用。这是我相关的Nginx配置: # proxy the madsonic server here location / { proxy_pass https://madsonic-server/; proxy_redirect off; proxy_buffering off; proxy_request_buffering off; allow all; proxy_http_version 1.1; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Host $server_name; proxy_set_header X-Forwarded-Proto $scheme; …

2
修改Nginx反向代理返回的HTML页面
我有一个反向代理设置,用于从Internet访问位于Intranet内的第三方应用程序。假设此应用程序位于URL上: https://internalserver:8080/ (仅可从Intranet访问) 并且代理处于开启状态: https://proxyserver/ (可从世界任何地方到达) 该代理由nginx管理,并且可以正常工作。当用户访问时,https://proxyserver/ 他们会在处获得应用程序的内容https://internalserver:8080/。 问题在于应用程序正在HTML响应中写入绝对URL,因此,当用户单击指向新页面的链接时,浏览器将尝试使用其内部名称(例如https://internalserver:8080/somepage 而不是) 来定位该页面 https://proxyserver/somepage。 我知道这是一个程序错误,但是我无法修改该程序。 我可以使用Nginx拦截响应,修改URL并将其发送(修改)给最终客户端吗?也许还有其他工具? 编辑:我之前看到过此问题,但我的情况更具体,引用的问题要求进行一般性修改。在那种情况下,fast-cgi ad hoc程序是最好的解决方案,我想要的是针对(我认为)更常见情况的一种更具体的解决方案。虽然快速cgi程序可以工作,但我正在寻找一种最简单,可能更强大的方法,并在现实世界中证明了这种情况的解决方案。

3
Apache proxy_http重定向到ip并设置主机名
希望你们能帮助我解决我遇到的代理问题。 我已经拥有的 我已经设置了一个Apache http反向代理,以将请求从* .proxy.domain代理到* .intern.domain。Apache是​​从外部网络访问我的内部Web应用程序的唯一方法。 例: app.proxy.domain -> app.intern.domain mail.proxy.domain -> mail.intern.domain 这一切都很好,但是我有以下问题。 问题 我想代理以下请求: app.proxy.domain -> app.internal.domain app-dev.proxy.domain -> app-dev.internal.domain 没问题,但是不幸的是,app-dev服务器运行的是应用服务器Web应用程序的精确副本,并且此Web应用程序仅响应其主机名(app.intern.domain) 所以我需要做的是代理以下内容 app.proxy.domain -> app.internal.domain (10.0.1.1) app-dev.proxy.domain -> app.internal.domain (10.0.1.2) 我可以做第二件事,在/ etc / hosts中添加“ 10.0.1.2 app.internal.domain”,但这也意味着app.proxy.domain将落在dev-server上。 我正在寻找一个选项,仅在app-dev.proxy.domain的vhost配置文件内设置/ etc / hosts条目,以便每个其他vhost配置都将DNS用于app.intern.domain。 想法... 有没有办法告诉apache配置,以 ProxyPass / http://10.0.1.2/ 但是发送app.intern.domain作为主机名? 编辑dev-servers网络应用程序以监听app-dev是没有选择的,因为它应该是精确的副本(不是我的决定...) 谢谢!

2
proxy:错误AH00898:与远程服务器进行SSL握手时出错
我有一台服务器,充当网络中cPanel邮件服务器的前端。前端服务器上的apache代理无故障运行了152天,然后突然发现使用它访问邮件服务器的Webmail客户端时出现500/502错误。 前端服务器使用已签名的SSL证书,cPanel服务器正在使用自签名的证书。这是前端服务器首次开始发生时的错误日志输出: [Tue Sep 10 18:22:52.959291 2013] [proxy:error] [pid 19531] (502)Unknown error 502: [client 173.xx.xx.xx:9558] AH01084: pass request body failed to 184.xx.xx.xx:2096 (184.xx.xx.xx), referer: https://domain.com:2096/cpsess12385596/3rdparty/roundcube/?_task=mail&_refresh=1&_mbox=INBOX [Tue Sep 10 18:22:52.959469 2013] [proxy:error] [pid 19531] [client 173.xx.xx.xx:9558] AH00898: Error during SSL Handshake with remote server returned by /cpsess12385596/3rdparty/roundcube/, referer: https://domain.com:2096/cpsess12385596/3rdparty/roundcube/?_task=mail&_refresh=1&_mbox=INBOX 前端服务器是一个EC2实例Apache/2.4.6 (Amazon) …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.