标签: reverse-proxy

OpenWRT - 如何将主机名的所有子域重定向到同一主机,以便可以进行反向代理?

我有一个 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 界面)中的设置,没有发现任何内容能够实现此目的。

有任何想法吗?

domain-name-system routing reverse-proxy subdomain openwrt

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

启用 nginx 上游 keepalive 的风险

使用 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 的风险是什么?

http nginx reverse-proxy keepalive

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

在后端失败后,如何在再次询问后端之前删除 apache 反向代理上的请求阻塞?

我正在研究 apache2 反向代理虚拟主机。当apache背后的服务器宕机时,对apache的第一个请求当然会显示错误页面。

但是在随后的请求中,apache 在再次询问后端服务器之前似乎延迟了一段时间。在这段时间内(虽然很短,但在开发中我根本不想延迟)只有 apache 错误页面显示给浏览器,尽管后端服务器已经启动。

apache 中的此设置在哪里,此行为是什么,以及如何将延迟时间设置为零?

编辑:我不是要更改单个请求的超时时间。我想更改阻塞时间。根据我的经验,apache 会在一段时间内阻止进一步的请求,然后再次询问曾经失败过的后端服务器。

Edit2:这就是 apache 提供的:

服务暂时不可用

由于维护停机或容量问题,服务器暂时无法为您的请求提供服务。请稍后再试。


Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.7 with Suhosin-Patch proxy_html/3.0.0 Server at localhost Port 80

在 Firefox 中按 Ctrl-R 60 秒后,页面终于出现了。

reverse-proxy apache-2.2

4
推荐指数
1
解决办法
4248
查看次数

如何设置反向代理将域名转发到不同的服务器?

我有一台装有 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,我无法弄清楚我需要配置什么才能获得它。

有人知道怎么做吗?

linux reverse-proxy apache-2.2

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

透明地在一个地址提供多个 Web 应用程序

我有多个 Web 应用程序在它们自己的 http 服务器上运行,例如端口 8080 上的 ruby​​/rails 应用程序和 8081 端口上的 python/cherrypy 应用程序。

是否可以通过单个端口地址使这些透明可用?也许通过添加转换所有请求的第三个 http 服务器(例如http://localhost/app1http://localhost/app2)。我选择的平台是 Linux

linux reverse-proxy ruby-on-rails cherrypy

4
推荐指数
1
解决办法
342
查看次数

使用 nginx 进行负载平衡时每秒请求数变慢

我已将 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 reverse-proxy load-balancing apache-2.2

4
推荐指数
1
解决办法
3868
查看次数

nginx proxypass 重写基本 URL

我正在尝试设置 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)

rewrite nginx reverse-proxy

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

如何使用 nginx 将请求代理到内部服务器?

我已经设置了一个 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)

但是应该有一种在代理时隐藏实际服务器地址的方法。

nginx proxy reverse-proxy

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

在 Apache 中的不同 VirtualHosts 上显示自定义错误页面

我有一个反向代理 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但没有显示任何错误页面

reverse-proxy virtualhost custom-errors apache-2.2

4
推荐指数
2
解决办法
9040
查看次数

nginx可以按需启动apache吗?

我有一个用于不再使用的旧网站的“存档”服务器,但我想将它们作为我的简历/作品集的一部分保持在线。

他们需要不同的 apache 和 php 版本和设置,所以我在不同的端口上运行多个 apache,在 nginx 反向代理后面。

但是,这些网站很少有访问者。两次访问之间可能需要几天甚至几周的时间,所以我认为让所有这些 apache 实例一直运行是对内存和 CPU 的巨大浪费。

我想做的是让 nginx 按需启动相应的 apache 服务器。也许是这样的:

  1. 向 nginx 传入 http 请求。
  2. nginx 检查 apache 服务器是否在其 tcp 端口上响应。
  3. 如果 apache 没有响应:运行一些脚本来启动 apache。
  4. 当 apache 开始响应时,将 http 请求反向代理到 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)

debian nginx reverse-proxy apache-2.2

4
推荐指数
1
解决办法
899
查看次数