有没有人开发或知道任何第三方工具(或常用工具的非明显用途)来帮助糟糕的系统管理员确定通过 Varnish 的请求发生了什么?虽然varnishstat, varnishtop, 并varnishhist给我非常高级(或低级)的概述,但我正在寻找可以告诉我以下内容的内容:
我正在使用 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 进行处理)。
想法?干杯
为什么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) 我有两台服务器,都运行 Apache。
服务器 1 和 2 位于相同的公共 IP 地址上。
服务器 1 的网络 IP 为192.168.1.101
服务器 2 的网络 IP 为192.168.1.102
example.com 转到服务器 1。这正是我想要的。
我希望 beta.example.com/* 通过 Apache 反向代理转到服务器 2。
但是,我只希望 beta.example.com/* 转到服务器 2。
我如何将 Apache 配置为仅使用一个子域代理服务器 2?
我在应用程序服务器前使用 nginx 作为反向代理。应用程序响应一个 X-Accel-Redirect 标头,告诉 nginx 要提供哪个静态文件。我希望能够做的是让 nginx 缓存其中一些上游响应,以便它可以在不访问应用程序服务器的情况下提供正确的文件。
不幸的是,这不起作用:nginx 似乎拒绝缓存任何带有 X-Accel-Redirect 标头的响应。如果我不使用 X-Accel-Redirect 并让应用程序服务器返回文件本身,那么缓存工作完美。然而,这不是很有效,因为应用服务器必须从磁盘读取文件并将其发送到 nginx,然后 nginx 将文件写回磁盘(在其缓存中)并将其发送到客户端。
这是我的 nginx 配置的精简版:
proxy_cache_path /tmp/nginx-cache keys_zone=testzone:10m;
server {
location / {
proxy_cache testzone;
proxy_pass http://localhost:8000/;
}
location /static-files/ {
internal;
alias /var/static-files/;
}
}
Run Code Online (Sandbox Code Playgroud)
有谁知道我正在尝试做的事情是否可行?我的怀疑是,当 nginx 发现 X-Accel-Redirect 标头时,它会立即跳转到处理提供的 URI 并跳过正常的缓存逻辑,但最好能确认这一点。
对于以 /c/ 开头的 uri,我想做一个 memcached 键测试,如果存在则返回键的值。如果没有密钥,则应将其传递给代理。
我用这个指令来做:
location ^~ /c/ {
set $memcached_key "prefix:$request_uri";
memcached_pass 127.0.0.1:11211;
default_type application/json;
error_page 404 405 502 = @proxy
}
Run Code Online (Sandbox Code Playgroud)
对于所有其他请求,我希望它们传递给同一个代理。我用下面的指令来做:
location / {
proxy_pass http://127.0.0.1:5555;
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;
}
Run Code Online (Sandbox Code Playgroud)
我的@proxy位置是这样的:
location @proxy {
proxy_pass http://127.0.0.1:5555;
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;
}
Run Code Online (Sandbox Code Playgroud)
正如所见,@proxy与/. 我不想复制粘贴我的代理配置。相反,我想将位置重定向/到@proxy. 如何将一个位置块重定向到另一个?如何摆脱代理的重复配置?
'晚上,
我在同一台物理服务器上有一个 Apache 服务器(2.2.19)和一个 4D Webstar 服务器(有点未知的 HTTP 服务器)。Apache 仅侦听 SSL 端口 (443) 并用作 4DW 的反向代理(通过 SSL VHost)。
这是我使用的两个代理指令:
ProxyPass / http://127.0.0.1:xxxx/ timeout=15 connectiontimeout = 15
ProxyPassReverse / http://127.0.0.1:xxxx/
Run Code Online (Sandbox Code Playgroud)
鉴于4DW服务器有时会掉线,我想有一个自定义的503错误页面来通知用户后端应用程序的停机或维护。除了 Apache 从 /htdocs/(这是文档根目录)重定向所有内容,我们需要快速访问错误文档以在需要时对其进行编辑(因此,外部错误文档不是一种选择)。
有什么方法可以强制 Apache 不代理给定目录(假设是 htdocs/error/),或者有什么解决方案可以在 DocumentRoot 之外使用错误文档?
干杯
我有一个使用 apache mod_proxy 的反向代理设置:
<VirtualHost *:443>
ServerName reverse.server.com
ProxyPass / http://10.1.9.11:3000/
ProxyPassReverse / http://10.1.9.11:3000/
ProxyPreserveHost on
...snip ssl stuff...
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
这在大多数情况下都能正常工作。问题在于内部服务器何时进行重定向。虽然 proxypassreverse 应该捕获该位置,但它似乎会重定向到http://reverse.server.com而不是https://reverse.server.com。所以它工作了一半,地址正确更改,但协议仍然作为内部服务器。
我不清楚为什么这样做,因为代理连接是 SSL - 有什么想法吗?
我想设置具有多个域和 IP 的 nginx 反向代理,以便每个域使用不同的 SSL 证书。我将 Ubuntu 作为操作系统运行,该操作系统安装在 KVM/Qemu VM 上。
据我了解 nginx,它应该能够通过一个 IP 为一个域(以及属于它的子域)提供服务。但我无法让它运行......
这是我的 nginx 配置:
/etc/nginx/sites-enabled/my_first_domain
server {
listen x.x.x.84:80; # this is a public ip
server_name firstdomain.com;
access_log /var/log/nginx/access.log proxy; # I made my own logformat
error_log /var/log/nginx/error.log;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Client-IP $remote_addr;
proxy_set_header X-Host $host;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
location / {
rewrite ^/(.*) https://firstdomain/$1; # redirect to https
}
}
server {
listen x.x.x.84:443 ssl; # this is a public …Run Code Online (Sandbox Code Playgroud) 我的目标是编写 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) reverse-proxy ×10
nginx ×6
apache-2.2 ×3
https ×2
ssl ×2
varnish ×2
cache ×1
haproxy ×1
mod-proxy ×1
wordpress ×1