我有一个 OpenWRT 路由器设置,192.168.1.1带有搜索域local(而不是默认的lan)。
我有一个服务器设置,192.168.1.200,主机名,server.local。
我有一个工作站 ,192.168.1.10主机名workstation.local。
server.local还运行 NGINX 反向代理,以提供子域,例如sub.server.local.
如果我的工作站尝试访问 ,server.local则会正确解析为指向192.168.1.200。
但是,如果我的工作站尝试访问 ,sub.server.local它无法解析为192.168.1.200。
如果我的工作站已将192.168.1.200 sub.server.local, 添加到其主机文件中,则它可以正确解析,并且服务器反向代理会将传入连接路由到正确的端口。
我该如何解决这个问题,以便所有子域都server.local解析为192.168.1.200?不必为服务器上的每个子域添加主机记录到每个工作站,这显然是不可持续的。
我假设我需要更改 OpenWRT 路由器上的一些 DNS 记录,但是查看 Luci(Web 界面)中的设置,没有发现任何内容能够实现此目的。
有任何想法吗?
使用 nginx 作为带有 PHP 后端的 Apache 的 HTTP 反向代理(我需要为网站管理员提供 .htaccess 灵活性)。看到 Apache 日志中使用的 http/1.0 让我了解如何启用保持活动连接。
在我的搜索中,我发现了 Nginx 的这篇博客文章https://www.nginx.com/blog/avoiding-top-10-nginx-configuration-mistakes/#no-keepalives
默认情况下,NGINX 为每个新的传入请求打开一个到上游(后端)服务器的新连接。这是安全但效率低下的,[...]
如果默认行为是安全的,那么启用上游 keepalive 的风险是什么?
我正在研究 apache2 反向代理虚拟主机。当apache背后的服务器宕机时,对apache的第一个请求当然会显示错误页面。
但是在随后的请求中,apache 在再次询问后端服务器之前似乎延迟了一段时间。在这段时间内(虽然很短,但在开发中我根本不想延迟)只有 apache 错误页面显示给浏览器,尽管后端服务器已经启动。
apache 中的此设置在哪里,此行为是什么,以及如何将延迟时间设置为零?
编辑:我不是要更改单个请求的超时时间。我想更改阻塞时间。根据我的经验,apache 会在一段时间内阻止进一步的请求,然后再次询问曾经失败过的后端服务器。
Edit2:这就是 apache 提供的:
服务暂时不可用
由于维护停机或容量问题,服务器暂时无法为您的请求提供服务。请稍后再试。
在 Firefox 中按 Ctrl-R 60 秒后,页面终于出现了。
我有一台装有 Apache 的 CentOS5 服务器,它有一个主机名为“example.com”的外部 IP 地址。
我喜欢的是
sub1.example.com sends http requests to 10.10.10.10
sub2.example.com sends http requests to 10.20.20.20
Run Code Online (Sandbox Code Playgroud)
查看 Apache的mod_proxy,我无法弄清楚我需要配置什么才能获得它。
有人知道怎么做吗?
我有多个 Web 应用程序在它们自己的 http 服务器上运行,例如端口 8080 上的 ruby/rails 应用程序和 8081 端口上的 python/cherrypy 应用程序。
是否可以通过单个端口地址使这些透明可用?也许通过添加转换所有请求的第三个 http 服务器(例如http://localhost/app1和http://localhost/app2)。我选择的平台是 Linux
我已将 nginx 设置为负载平衡器,可将代理请求反向发送到 2 个 Apache 服务器。我已经使用 ab 对设置进行了基准测试,并且每秒收到大约 35 个请求,请求分布在 2 个后端服务器之间(不使用 ip_hash)。令我困惑的是,如果我直接通过 ab 查询任一后端服务器,我每秒会收到大约 50 个请求。
我在 ab 中尝试了许多不同的值,最常见的是 1000 个请求和 100 个并发连接。
知道为什么分布在 2 个服务器上的流量会导致每秒请求数比直接命中更少吗?
附加信息:
我已经尝试了 1 到 8 之间的 worker_processes 值,1024 到 8092 之间的 worker_connections 值,并且还尝试了 keepalive 0 和 65。
我的主要 conf 目前看起来像这样:
user www-data;
worker_processes 1;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
worker_rlimit_nofile 8192;
events {
worker_connections 2048;
use epoll;
}
http {
include /etc/nginx/mime.types;
sendfile on;
keepalive_timeout 0;
tcp_nodelay on;
gzip on;
gzip_disable "MSIE [1-6]\.(?!.*SV1)"; …Run Code Online (Sandbox Code Playgroud) 我正在尝试设置 Nginx 以使用 proxy_pass 将请求转发到多个后端服务。
其中一些不支持在子文件夹下访问,因此我必须添加重写以剥离附加的子文件夹,以允许从同一端口访问它们。
关于改进重写的任何提示?
卷曲输出;
:~$ curl -I -k https://example.net/internal
HTTP/1.1 404 Not Found
Server: nginx/1.0.5
Date: Thu, 19 Jan 2012 22:30:46 GMT
Content-Type: text/html; charset=utf-8
Connection: keep-alive
Content-Length: 145
:~$ curl -I -k https://example.net/internal/
HTTP/1.1 200 OK
Server: nginx/1.0.5
Date: Thu, 19 Jan 2012 22:31:12 GMT
Content-Type: text/html
Connection: keep-alive
Content-Length: 1285
Accept-Ranges: bytes
Last-Modified: Wed, 18 Jan 2012 01:35:21 GMT
Run Code Online (Sandbox Code Playgroud)
配置文件;
代理配置文件
location /internal {
rewrite ^/internal/(.*) /$1 break;
proxy_pass http://localhost:8081/internal;
include proxy.inc;
}
.... …Run Code Online (Sandbox Code Playgroud) 我已经设置了一个 Web 服务器来在http://localhost:3000上查看我的存储库(一个 Gitalist 实例),我想使用 nginx 设置一个代理。
我希望在接收到 DOMAIN/git/ 之类的 URI 时将请求代理到我的存储库视图。
我当前的 nginx 配置声明如下:
location /git {
proxy_pass http://localhost:3000/;
}
Run Code Online (Sandbox Code Playgroud)
请求确实被代理到服务器,但没有任何图像/链接或 css 可以解析,因为它们指向“ http://localhost:3000/logo.png ”例如。
编辑
如果我 proxy_pass 到实际服务器地址,它确实有效:
location /git {
proxy_pass http://192.168.1.111:3000/;
}
Run Code Online (Sandbox Code Playgroud)
但是应该有一种在代理时隐藏实际服务器地址的方法。
我有一个反向代理 Apache,它将请求移动到 Tomcat servlet。Apache中虚拟主机上的配置是:
<VirtualHost 10.10.10.10:80>
ProxyPass /Site1/ServLet1 http://1.1.1.1/Site1/ServLet1
ProxyPassReverse /Site1/ServLet1 http://1.1.1.1//Site1/ServLet1
ProxyPass /Site2/ServLet2 http://2.2.2.2/Site2/ServLet2
ProxyPassReverse /Site2/ServLet2 http://2.2.2.2/Site1/ServLet1
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
本质上,如果涉及到10.10.10.10和 requests ,则将其/Site1/ServLet1路由到/Site1/ServLet1.
如果我添加
<VirtualHost 10.10.10.10:80>
ProxyPass /Site1/ServLet1 http://1.1.1.1/Site1/ServLet1
ProxyPassReverse /Site1/ServLet1 http://1.1.1.1//Site1/ServLet1
ErrorDocument 404 /customerrors/site1/404.html
ProxyPass /Site2/ServLet2 http://2.2.2.2/Site2/ServLet2
ProxyPassReverse /Site2/ServLet2 http://2.2.2.2/Site1/ServLet1
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
所以它会显示一个自定义错误site1(我设置了 ErrorDocument),它将被提供给两者。
如何在每个站点维护这种配置的情况下拥有不同的 404 错误页面?
谢谢
编辑:
如果我根据以下评论修改配置,例如:
<Location /Site1/ServLet1/>
ProxyPass http://1.1.1.1/Site1/ServLet1
ProxyPassReverse http://1.1.1.1/Site1/ServLet1
ErrorDocument 404 /customerrors/site1/404.html
</Location>
Run Code Online (Sandbox Code Playgroud)
然后我仍然可以到达http://1.1.1.1/Site1/ServLet1但没有显示任何错误页面
我有一个用于不再使用的旧网站的“存档”服务器,但我想将它们作为我的简历/作品集的一部分保持在线。
他们需要不同的 apache 和 php 版本和设置,所以我在不同的端口上运行多个 apache,在 nginx 反向代理后面。
但是,这些网站很少有访问者。两次访问之间可能需要几天甚至几周的时间,所以我认为让所有这些 apache 实例一直运行是对内存和 CPU 的巨大浪费。
我想做的是让 nginx 按需启动相应的 apache 服务器。也许是这样的:
我希望 apache 守护进程以 PHP 作为模块加载。我希望访问者浏览网站时体验既快又好,但是,第一次请求的加载时间几秒钟是没有问题的。有些站点是 AJAX 密集型的,因此不能为每个请求加载 apache。
我没有找到任何明显的方法来做到这一点。有没有人对类似的设置有任何想法或经验?是否有其他反向代理软件(除了 nginx)可以做到这一点?
(当然,我还需要一种在不活动时关闭 apache 的方法,但这对于 cron 作业来说非常简单,只需检查 apache 的 access.log 中是否发生了某些事情。)
顺便说一句.. 服务器正在运行 Debian Lenny。
编辑/我的解决方案:
我通过使用https://github.com/nodejitsu/node-http-proxy为 node.js编写脚本解决了这个问题。
// I'm using http-proxy to make the proxying:
var server = httpProxy.createServer(function …Run Code Online (Sandbox Code Playgroud) reverse-proxy ×10
apache-2.2 ×5
nginx ×5
linux ×2
cherrypy ×1
debian ×1
http ×1
keepalive ×1
openwrt ×1
proxy ×1
rewrite ×1
routing ×1
subdomain ×1
virtualhost ×1