我在Mac 上使用CouchDBX运行本地 CouchDB 实例,使用ProxyPass指令代理在 Apache 2 后面:
<VirtualHost *:80>
ServerName playlick # points to localhost in /etc/hosts
DocumentRoot "/Users/james/Sites/playlick"
ProxyPass /data http://localhost:5984
ProxyPassReverse /data http://localhost:5984
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
如果我尝试在我的 Couch 实例未运行http://playlick/data时点击它,我会收到503 Service Temporously Unavailable错误,正如预期的那样。
然后我启动 Couch 服务器并点击相同的 URL,但在我重新启动 Apache 代理之前我仍然收到错误消息。
另一方面,如果我在点击该 URL之前启动 Couch 实例,则一切正常,无需接触 Apache。
因此,似乎 503 错误已被缓存,直到 Apache 进程重新启动。我如何阻止这种情况发生?
或者,如果这不可能,当我在 CouchDBX GUI 应用程序中启动 Couch 实例时,如何强制 Apache 重新启动?
我的服务器在局域网中,并通过代理服务器连接到互联网。我的 PHP 应用程序 (Drupal) 应该能够通过 PHP 代码检查更新。如何为PHP设置代理设置以使其正常运行?
注意:我知道我可以在 curl 或其他东西中设置代理设置。但情况是代码不是我的,我不想改变它。我只是想让 PHP 始终通过特定的代理设置连接到互联网。
我们这里有一些用户在工作时间使用 Facebook,他们的工作效率很高,作为临时措施,我远程编辑了他们的主机文件以指向 facebook.com 及其各种子域指向回送地址,然后手动在午餐时间发表评论,以便他们可以使用它。
每天对许多用户执行此操作显然有点令人厌烦。
我正在寻找可以按计划自动执行此阻塞的方法。
我在想某种代理服务器,我可以通过组策略将其添加到浏览器上的代理设置中。
有谁知道任何免费或廉价的 Windows 软件解决方案可以做到这一点?或者我可以在 PC/VM 上安装独立的东西?
我想我总是可以编写和安排一些批处理文件来切换一个被阻止的主机文件和一个未被阻止的主机文件。
网络是 Windows 2003 SBS 服务器、Windows XP sp3 工作站、服务器 Netgear DG834 路由器上的单一接口,虽然它确实有一些调度,但它不允许设置一个窗口,只有一个块窗口 - 例如 9-5pm,但我想要在中间打开它。
在我的 Ubuntu Server 10.04 中,我正在运行一个示例 node.js 应用程序:
var http = require("http");
function onRequest(request, response) {
console.log("Request received.");
response.writeHead(200, {"Content-Type": "text/html"});
response.write("Hello World");
response.end();
}
http.createServer(onRequest).listen(3000);
Run Code Online (Sandbox Code Playgroud)
它只是侦听端口 3000 上的请求,登录控制台此请求并向客户端发送 HTTP “Hello World”
目标是使这个应用程序与 Apache2 共存。因此,经过一番研究后,我以这种方式编辑了默认文件(/etc/apache2/sites-available/default):
<VirtualHost *:80>
ServerAdmin haj@myserver.com
ServerName dev.myserver.com
<Location /node>
ProxyPassReverse http://127.0.0.1:3000/
ProxyPass http://127.0.0.1:3000/
</Location>
<Proxy>
Allow from all
</Proxy>
DocumentRoot /home/haj/www/http_home
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /home/haj/www/http_home/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ErrorLog /home/haj/www/log/error.log
# …Run Code Online (Sandbox Code Playgroud) 我知道如何使用 设置一个简单的代理ssh -D,但我想在这种情况下使用基于用户名和密码的身份验证。有什么办法吗?
尝试做标题中所说的:在高负载下保留现有会话,并向新到达的访问者提供 503 消息。
问题:它有效,但会话不会持续超过大约 90 秒。
目前的结果让我想知道是否有我缺少的超时设置。
我试图让haproxy:
这样,正在填写多步骤表单的访问者不会对 503 错误感到惊讶,并且可以告诉新访问者“请稍后再回来,因为我们现在真的很忙”。
设置如下:
{visitors}
?
[haproxy]
?
[rails app on unicorn served by nginx] (right now just one
backend: 'backend-001')
Run Code Online (Sandbox Code Playgroud)
为了实现上述目标,我正在使用以下配置。
这个是用于测试的,有一个非常低的限制(前端10个连接(fe_conn gt 10)),使测试更容易。
为了让服务器承受一定的负载,我使用 httperf 如下:
httperf --hog --server staging.machine.tld --uri /do_some_things --wsess=500,10,30 --rate 2
global
daemon
maxconn 10000
defaults
mode http
timeout connect 6s
timeout client 60s
timeout server 60s
balance roundrobin
option http-server-close
frontend http-in …Run Code Online (Sandbox Code Playgroud) 我设置了 apache 来代理 tomcat,但是当我定位页面时出现以下错误。我有时会得到一个空白页或 503:
[错误]
[Mon Dec 03 04:58:16 2012] [error] proxy: ap_get_scoreboard_lb(2) failed in child 29611 for worker proxy:reverse
[Mon Dec 03 04:58:16 2012] [error] proxy: ap_get_scoreboard_lb(1) failed in child 29611 for worker https://localhost:8443/
[Mon Dec 03 04:58:16 2012] [error] proxy: ap_get_scoreboard_lb(0) failed in child 29611 for worker http://localhost:8080/
Run Code Online (Sandbox Code Playgroud)
我在 vm 上配置了两个 vhost,如下所示:
[http 主机]
<VirtualHost *:80>
ServerName www.mysite.net
ServerAlias mysite.net
ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://localhost:8080/ retry=0
ProxyPassReverse …Run Code Online (Sandbox Code Playgroud) 使用此配置:
server {
listen 8080;
location / {
if ($http_cookie ~* "mycookie") {
proxy_set_header X-Request $request;
proxy_pass http://localhost:8081;
}
}
}
Run Code Online (Sandbox Code Playgroud)
重新加载 nginx 服务时出现此错误:
Reloading nginx configuration: nginx: [emerg] "proxy_set_header" directive is not allowed here in /etc/nginx/conf.d/check_cookie.conf:5
nginx: configuration file /etc/nginx/nginx.conf test failed
Run Code Online (Sandbox Code Playgroud)
此配置工作正常,但它不符合我的要求:
server {
listen 8080;
location / {
proxy_set_header X-Request $request;
if ($http_cookie ~* "mycookie") {
proxy_pass http://localhost:8081;
}
}
}
Run Code Online (Sandbox Code Playgroud)
为什么我不能将proxy_set_header指令放在 if 子句中?
location /product {
proxy_pass http://10.0.0.25:8080;
}
Run Code Online (Sandbox Code Playgroud)
如果我对产品文件夹使用我的第一个位置描述,我应该使用http://mysdomain.com/product/并且我不能http://mysdomain.com/product从浏览器使用 。我的意思是我应该使用 url 的斜线结尾。我想用两个状态访问产品文件夹。
这有什么区别吗:
location /product/ {
proxy_pass http://10.0.0.25:8080;
}
Run Code Online (Sandbox Code Playgroud) 如果后端服务器关闭,我需要 nginx 代理使用缓存:
这是我的配置。但似乎是 nginx 使用缓存而不检查后端服务器。
http {
# ...
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_cache_path /tmp/nginx levels=1:2 keys_zone=tmpzone:10m inactive=60m;
proxy_cache_key "$scheme$request_method$host$request_uri";
server {
server_name _;
location / {
proxy_connect_timeout 5s;
proxy_read_timeout 5s;
proxy_cache tmpzone;
proxy_cache_valid 200 304 1d;
proxy_cache_use_stale error timeout invalid_header updating http_500 http_502 http_503 http_504;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host 'www.example.com';
proxy_pass http://www.example.com;
}
}
}
Run Code Online (Sandbox Code Playgroud)
问题是,如果后端服务器已启动,我如何绕过代理缓存?当后端服务器启动时,我的代理服务器根本不使用缓存。