标签: reverse-proxy

自省清漆的工具

有没有人开发或知道任何第三方工具(或常用工具的非明显用途)来帮助糟糕的系统管理员确定通过 Varnish 的请求发生了什么?虽然varnishstat, varnishtop, 并varnishhist给我非常高级(或低级)的概述,但我正在寻找可以告诉我以下内容的内容:

  • 当前正在进行哪些请求(以及他们已经这样多久了,他们被发送到哪里,诸如此类)
  • 后端、虚拟主机之类的请求的平均服务时间
  • 其他可以帮助我识别行为不端的后端、虚拟主机等的东西。

varnish reverse-proxy

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

多少个反向代理(nginx、haproxy)太多了?

我正在使用 nginx、haproxy 和 apache 设置一个 HA(高可用性)集群。

我一直在阅读有关 nginx 和 haproxy 的精彩内容。人们倾向于选择其中之一,但我两者都喜欢。Haproxy 在负载均衡方面比 nginx 的简单循环更灵活(即使有上游公平补丁)。但我想保留 nginx,以便在集群入口处将非 https 重定向到 https 等。

另一方面,nginx 在提供静态内容方面要快得多,并且会减少强大的 apache 的负载,它喜欢吃大量的 RAM!

这是我计划的设置:

负载均衡器:nginx 监听 80/443 端口,proxy_forwards 到同一台服务器上 8080 上的 haproxy 来实现多个节点之间的负载均衡。

节点:节点上的nginx监听8080上haproxy的请求,如果内容是静态的,就服务它。但是如果它是一个后端脚本(在我的例子中是 PHP),代理转发到同一节点服务器上的 apache2,监听不同的端口号。

从技术上讲,此设置有效,但我担心的是,请求通过多个代理是否会减慢请求速度?大多数请求将是 PHP 请求,因为后端是服务(这意味着从 nginx -> haproxy -> nginx -> apache 进行处理)。

想法?干杯

nginx varnish reverse-proxy load-balancing haproxy

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

使用直接服务器返回转发 HTTP 请求

我的服务器分布在多个数据中心,每个数据中心存储不同的文件。我希望用户能够通过单个域访问所有服务器上的文件,并让各个服务器直接将文件返回给用户。

下面显示了一个简单的示例: 1) 用户的浏览器请求http://www.example.com/files/file1.zip 2) 根据 example.com 的 DNS A 记录,请求转到服务器 A。3) 服务器 A 分析请求并计算出 /files/file1.zip 存储在服务器 B 上。 4) 服务器 A 将请求转发到服务器 B。 5) 服务器 B 将 file1.zip 直接返回给用户,无需经过服务器一种。

注意:步骤 4 和 5 必须对用户透明,不能涉及向用户发送重定向,因为这会违反单个域的要求。

根据我的研究,我想要实现的称为“直接服务器返回”,它是负载平衡的常见设置。它有时也被称为半反向代理。

对于第 4 步,听起来我需要进行 MAC 地址转换,然后将请求传回网络,对于服务器网络之外的服务器,将需要隧道。

对于第 5 步,我只需要根据负载平衡设置中的真实服务器来配置服务器 B。即,服务器 B 应该在回送接口上拥有服务器 A 的 IP 地址,并且它不应该回答对该 IP 地址的任何 ARP 请求。

我的问题是如何实际实现第 4 步?

我发现有很多硬件和软件可以在第 4 层实现简单的负载平衡,但这些解决方案不够完善,无法处理我需要的那种自定义路由。看来我需要推出自己的解决方案。

理想情况下,我想在 Web 服务器级别进行路由/转发,即在 PHP 或 C#/ASP.net 中。但是,我愿意在较低级别(例如 Apache 或 IIS)或更低级别(即在所有内容之前使用自定义代理服务)执行此操作。

谢谢。

http reverse-proxy forwarding

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

Apache 2.2 在位置禁用反向代理

我在 FreeBSD 上运行 Apache 2.2。最近我一直在为一些 Django/Python 寻找切诺基 + uWSGI。

我想将 Apache 2.2 保留在前面(端口 80 回复)并代理连接到在同一台机器上运行的切诺基服务器。

我的问题是我的 URL 上的几个目录位置有一些遗留的东西。

我想 / 去我的 Cherokee(反向代理),但为 /dir1/ 和 /dir2/ 保留 Apache。

我让反向代理与 mod_proxy 一起工作正常。

ProxyRequests            Off
<Location />
    ProxyPass                http://127.0.0.1:8080/
    ProxyPassReverse         http://127.0.0.1:8080/
</Location>
Run Code Online (Sandbox Code Playgroud)

Cherokee 在本地主机的 8080 端口上运行。

问题是我不知道如何关闭 /dir1/ 和 /dir2/ 的反向代理,以便 Apache 处理对 dirs 的传入请求。

是否可以为 /dir1/ 和 /dir2/ 添加 Location 指令以告诉 Apache 不要反向代理目录?

reverse-proxy apache-2.2

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

HAProxy:显示“BADREQ” | BADREQ 数以千计

我的 HAProxy 配置。

#HA-Proxy version 1.3.22 2009/10/14  Copyright 2000-2009 Willy Tarreau <w@1wt.eu>
global
    maxconn 10000
    spread-checks 50
    user haproxy
    group haproxy
    daemon
    stats socket /tmp/haproxy
    log localhost   local0
    log localhost   local1 notice

defaults
    mode    http
    maxconn 50000
    timeout client 10000
    option forwardfor except 127.0.0.1
    option httpclose
    option httplog

listen dcaustin 0.0.0.0:80
    mode http
    timeout connect 12000
    timeout server 60000
    timeout queue 120000
    balance roundrobin
    option httpchk GET /index.html
    log global
    option httplog
    option dontlog-normal
    server web1 10.10.10.101:80 maxconn 300 check …
Run Code Online (Sandbox Code Playgroud)

reverse-proxy load-balancing haproxy ubuntu-10.04

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

通过 Apache 反向代理 Node.js 是否有意义?

性能方面,将请求从 Apache VirtualHost 重定向到 Node.js 实例是否有意义?代理是否抵消了令人敬畏的 Node.js 性能?


仅供参考:我还需要在同一台机器上解析和运行几个 PHP Web 应用程序,这是我什至考虑使用反向代理的唯一原因。

根据我的研究,Nginx 的开销较小,因此性能稍好一些,但不幸的是不支持 HTTP/1.1。

我还考虑过让 Node.js 作为反向代理并向 Apache 发送某些请求(例如,它然后处理 PHP 文件),但我听说可能存在很多安全问题。

proxy reverse-proxy node.js apache-2.2

6
推荐指数
2
解决办法
3240
查看次数

Nginx 无限重定向循环

为什么http://compassionpit.com/blog/经历无限重定向循环?这是我的 nginx conf 文件。该站点由端口 8000 上的 nodejs 服务器运行,Apache 提供博客 (wordpress) 和论坛 (phpBB)。论坛解决得很好,在http://www.compassionpit.com/forum/ ...

 server {
        listen          80;
        server_name     www.compassionpit.org;
        rewrite         ^/(.*) http://www.compassionpit.com/$1  permanent;
    }


    server {
        listen       80;                # your server's public IP address
        server_name  www.compassionpit.com;
        index        index.php index.html;

        location ~ ^/$ {
            proxy_pass http://127.0.0.1:8000;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }

        location @blogphp {
            internal;
            root /opt/blog/;
            include fastcgi_params;
            fastcgi_param  SCRIPT_FILENAME  $document_root/index.php;
            fastcgi_index  index.php;
            fastcgi_pass   127.0.0.1:8080;
        }

        location ~ ^/(forum|blog)/($|.*\.php) {
            root /opt/; …
Run Code Online (Sandbox Code Playgroud)

nginx reverse-proxy wordpress

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

Nginx 反向代理到 HTTPS 上游得到 502 Bad Gateway?

我的目标是编写 Jasmine(一个 JavaScript BDD 测试框架)测试,以执行由独立团队构建的后端 API。

我有一个在端口 9000 上运行的 Jasmine 服务器。该代码使用以 /web/ 开头的相对路径发出 AJAX 请求。我希望将这些请求定向到后端。

到目前为止,我有一个上游块的反向代理,如下所示:

upstream backend {
  server api-dev.example.com;
}

server {
  ...

  location / {
    proxy_pass http://localhost:9000;
    ...
  }

  location /web/ {
    proxy_pass https://backend/web/;
    ...
  }
}
Run Code Online (Sandbox Code Playgroud)

到“/”的流量工作正常,但 AJAX 请求(例如,

http://localhost:50000/web/internal?action=network-statistics
Run Code Online (Sandbox Code Playgroud)

) 是 502'ing。我相信它到达了正确的端点,但存在 SSL 错误。Nginx 的错误日志似乎证实了我的怀疑:

2013/12/13 16:55:28 [error] 1885#0: *257 SSL_do_handshake() failed (SSL: error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol) while SSL handshaking to upstream, client: 127.0.0.1, server: localhost, request: "GET /web/internal/stats?action=network-statistics&request=null HTTP/1.1", upstream: "https://50.18.192.173:80/web/internal/stats?action=network-statistics", host: "localhost:50000", referrer: "http://localhost:50000/" …
Run Code Online (Sandbox Code Playgroud)

ssl nginx reverse-proxy

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

nginx 配置因 SSL 密钥/pem 失败(特殊情况)

我正在尝试使用经过认证的 ssl 密钥在我的 nginx 反向代理上安装 SSL,但是当我尝试重新启动服务器时收到此消息:

Restarting nginx: [emerg]: SSL_CTX_use_PrivateKey_file("/etc/nginx/conf.d/cert.key") failed (SSL: error:0906D06C:PEM routines:PEM_read_bio:no start line error:140B0009:SSL routines:SSL_CTX_use_PrivateKey_file:PEM lib)
configuration file /etc/nginx/nginx.conf test failed
Run Code Online (Sandbox Code Playgroud)

每个文件都是 root:root 有 600 个权限我已经测试了证书并且它们通过这个网站进行了验证:http ://ssltools.com/cert_key_match

我的键中没有尾随奇怪的字符,每行有 64 个字符

这是我的配置文件

server {
    listen   443;
    server_name     my.domain.com;
    ssl on;
    ssl_certificate      conf.d/cert.pem;
    ssl_certificate_key  conf.d/cert.key;

    location / {
         proxy_pass         http://upstream1;
         proxy_redirect     off;
         proxy_buffering    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;
    }
Run Code Online (Sandbox Code Playgroud)

}

有任何想法吗?谢谢

ssl configuration nginx web-server reverse-proxy

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

Nginx 反向代理到另一个提供静态文件的 nginx 服务器

我有一个 Nginx 服务器托管一个 Web 应用程序,它在直接访问时工作正常。它的配置如下

server {
    listen 8000 default_server;

    listen [::]:8000 default_server ipv6only=on;

    root /data/www/ ;
    server_name server1.com;

    location / {
            try_files $uri $uri/ =404;
        }

    location /app/ {

    }    
}
Run Code Online (Sandbox Code Playgroud)

现在我必须从另一个 Nginx 服务器为这个应用程序提供服务 所以我设置了如下所示的反向代理

server {
        listen 80 default_server;

        listen [::]:80 default_server ipv6only=on;

        root /data/www/ ;
        server_name server2.com;

        location / {
                try_files $uri $uri/ =404;
            }

        location /app/ {
                proxy_pass http://server1.com:8000/app/;
        }    
Run Code Online (Sandbox Code Playgroud)

当我从 server2 访问应用程序时,我收到如下错误,例如当我访问http://server2.com/app/css/app.css 时 (抱歉没有代表发布链接)

[错误] 6601#0: *1 open() "/data/www/app/css/app.css" failed (2: No such file …

nginx reverse-proxy

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