标签: reverse-proxy

使用 NGINX 将 HTTPS 请求代理到 HTTP 后端

我将 nginx 配置为我的外部可见网络服务器,它通过 HTTP 与后端通信。

我想要实现的场景是:

  1. 客户端向 nginx 发出 HTTP 请求,该请求被重定向到相同的 URL 但通过 HTTPS
  2. nginx 代理通过 HTTP 向后端请求
  3. nginx 通过 HTTP 从后端接收响应。
  4. nginx 通过 HTTPS 将其传递回客户端

我当前的配置(后端配置正确)是:

服务器 {
        听80;
        server_name 本地主机;

        位置 ~ .* {
            proxy_pass http://backend;
            proxy_redirect http://backend https://$host;
            proxy_set_header 主机 $host;
            }
        }

我的问题是对客户端的响应(第 4 步)是通过 HTTP 而不是 HTTPS 发送的。有任何想法吗?

nginx https reverse-proxy

47
推荐指数
2
解决办法
13万
查看次数

是否有基于名称的虚拟主机 SSH 反向代理?

我越来越喜欢我们开发环境中的 HTTP 反向代理,并发现基于 DNS 的虚拟主机反向代理非常有用。在防火墙上只打开一个端口(和标准端口)使管理变得更加容易。

我想找到类似于 SSH 连接的东西,但运气不佳。我不想简单地使用 SSH 隧道,因为这需要打开标准以外的端口范围。有什么东西可以做到这一点吗?

HAProxy 能做到吗?

ssh reverse-proxy

42
推荐指数
3
解决办法
3万
查看次数

Nginx vs Apache 作为反向代理,选择哪一个

此类问题可能已在此处提出,但我找不到与我的问题真正相符的问题。听说nginx性能相当可观,但是Apache有更多文档,社区(阅读:专家)寻求帮助

现在我想知道的是,两个 Web 服务器在性能、配置的简单性、定制级别等方面的比较如何。在 vps 环境中作为反向代理服务器??

我仍在权衡两者之间的 ruby​​ web 应用程序(不是 ROR)与瘦(ruby web 服务器之一)一起使用。
具体答案将不胜感激。不触及红宝石部分的一般答案是可以的。我仍然是 Web 服务器管理方面的菜鸟。

nginx reverse-proxy apache-2.2

41
推荐指数
3
解决办法
4万
查看次数

如何在错误日志之外进一步调试 nginx?

我目前正在接收一个相当大的 HTTP 洪水,它导致我的 nginx 反向代理产生一个 502 错误网关。

我有一个前端服务器运行 nginx 作为后端服务器的代理,但它只是收到一堆connect() failed (110: Connection timed out) while connecting to upstream错误。成吨的。如果我绕过代理服务器连接到后端,我可以很好地运行该站点,所以我知道它在某个地方的反向代理中。但是,我不知道如何确定它超时的原因。

有什么帮助吗?

在 CentOS 6.2 上运行 nginx 1.2.3

nginx reverse-proxy

39
推荐指数
3
解决办法
6万
查看次数

Windows 上有哪些工具可以模拟/模拟网络问题?

我正在寻找适用于 Windows 的工具,这些工具可以充当服务器前的反向代理,以引入各种网络问题,例如抖动、延迟或数据包丢失。

我的偏好是可以在 Windows 上运行的软件解决方案。Httpd mod_proxy 似乎不支持这样的配置,谷歌搜索这个类别的工具被证明是徒劳的。

networking windows http reverse-proxy

36
推荐指数
1
解决办法
5万
查看次数

在 Apache Loadbalancer 和后端之间使用 Https

我在 2 个 apache 服务器前使用配置为负载均衡器的 apache (2.4) 服务器。当我在负载均衡器和后端之间使用 http 连接时它工作正常,但是使用 https 不起作用。负载均衡器的配置:

SSLProxyEngine on
SSLProxyVerify none
SSLProxyCheckPeerCN off
<Proxy balancer://testcluster>
  BalancerMember https://[Backend1]:443/test
  BalancerMember https://[Backend2]:443/test
</Proxy>
ProxyPass /test balancer://testcluster
Run Code Online (Sandbox Code Playgroud)

后端目前只有自签名证书,这就是禁用证书验证的原因。

负载均衡器上的错误日志包含以下内容:

[proxy:error] [pid 31202:tid 140325875570432] (502)Unknown error 502: [client ...] AH01084: pass request body failed to [Backend1]:443 ([Backend1])
[proxy:error] [pid 31202:tid 140325875570432] [client ...] AH00898: Error during SSL Handshake with remote server returned by /test/test.jsp
[proxy_http:error] [pid 31202:tid 140325875570432] [client ...] AH01097: pass request body failed to [Backend1]:443 ([Backend1]) from [...] …
Run Code Online (Sandbox Code Playgroud)

reverse-proxy mod-ssl apache-2.2 apache-2.4

35
推荐指数
1
解决办法
6万
查看次数

在 nginx 反向代理和后端网络服务器之间使用 HTTP/2.0

我在能够执行 HTTP/2.0 的后端网络服务器前使用 nginx 作为反向 ssl 代理。

我注意到 nginx 通过 HTTP/1.1 而不是 HTTP/2.0 代理对后端服务器的请求。是否可以告诉 nginx 使用未加密的 HTTP/2.0 连接?这会提高性能吗?

nginx reverse-proxy http2

33
推荐指数
3
解决办法
4万
查看次数

横向扩展软件负载均衡器的典型方法是什么?

我经常在一堆应用服务器前看到带有 SLB/反向代理的 Web 应用架构。

当到SLB的连接数需要太多资源而单个SLB无法有效处理时,会发生什么情况?对于一个具体但过度的示例,请考虑 200 万个持久 HTTP 连接。显然,单个SLB 无法处理此问题。

什么是缩放的建议配置一个SLB?

创建 LB 的组/集群是典型的吗?如果是这样,客户端负载如何在 LB 组之间分布?

scalability reverse-proxy load-balancing

32
推荐指数
3
解决办法
1万
查看次数

从 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;
}
Run Code Online (Sandbox Code Playgroud)

nginx reverse-proxy

32
推荐指数
2
解决办法
9万
查看次数

如何在nginx反向代理中重写Set-Cookie的域部分?

我有一个简单的 nginx 反向代理:

server {
  server_name external.domain.com;
  location / {
    proxy_pass http://backend.int/;
  }
}
Run Code Online (Sandbox Code Playgroud)

问题是Set-Cookie响应头包含;Domain=backend.int,因为后端不知道它正在被反向代理。

如何让 nginx 重写Set-Cookie响应头的内容,替换;Domain=backend.int;Domain=external.domain.com

Host在这种情况下,不更改传递标头不是一种选择。

Apache httpd有此功能已有一段时间了,请参阅ProxyPassReverseCookieDomain,但我似乎找不到在 nginx 中执行相同操作的方法。

rewrite nginx reverse-proxy cookies

31
推荐指数
2
解决办法
9万
查看次数