标签: reverse-proxy

我可以在Prefork MPM下使用Apache mod_proxy作为连接池吗?

摘要/ Quesiton:

我让Apache运行Prefork MPM,运行php.我正在尝试使用Apache mod_proxy创建一个反向代理,我可以通过它重新路由我的请求,以便我可以使用Apache来进行连接池.示例impl:

在httpd.conf中:

SSLProxyEngine On
ProxyPass /test_proxy/ https://destination.server.com/ min=1 keepalive=On ttl=120
Run Code Online (Sandbox Code Playgroud)

但是当我运行我的测试时,这是循环中的以下命令:

curl -G 'http://localhost:80/test_proxy/testpage'
Run Code Online (Sandbox Code Playgroud)

它似乎没有重新使用连接.

在进一步阅读之后,听起来我没有获得连接池功能,因为我使用的是Prefork MPM而不是Worker MPM.因此,每次我向代理发出请求时,它都会使用自己的连接池(大小为1)来旋转新进程,而不是使用维护自己的池的单个工作进程.这种解释是对的吗?


背景资料:

我通过https向我运行的网站上的每个页面发出请求的外部服务器.

谈判SSL握手变得越来越昂贵,因为我使用php而且它似乎不支持连接池 - 如果我向我的网站收到300页请求,他们必须与外部服务器进行300次SSL握手,因为连接已关闭每个脚本完成运行后.

所以我试图在Apache下使用反向代理作为连接池,在php进程之间保持连接,所以我不必经常进行SSL握手.

给我这个想法的消息来源:

apache connection-pooling reverse-proxy mod-proxy

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

如何在一个端口和一个服务器块中设置具有不同域的nginx

我有

server {
    listen 80;
    server_name domain1 domain2 domain3

    location / {
        proxy_pass http://127.0.0.1:8088;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;

        proxy_connect_timeout   120;
        proxy_send_timeout      120;
        proxy_read_timeout      180;
    }
}

server {
     listen domainX:80;
     server_name domainX www.domainX

     location / {
            proxy_pass http://127.0.0.1:8088;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $remote_addr;

            proxy_connect_timeout   120;
            proxy_send_timeout      120;
            proxy_read_timeout      180;
    }

    location ~* \.(jpeg|jpg|gif|png|ico|bmp|swf|css|js)$ {
            root domainXStaticRoot
    }

    # other options for domainX only
}
Run Code Online (Sandbox Code Playgroud)

对于来自第一个服务器块的域,nginx仅返回根页面:

http://domain1 -> returns root page for …
Run Code Online (Sandbox Code Playgroud)

apache reverse-proxy nginx

5
推荐指数
0
解决办法
1205
查看次数

Apache Tomcat 7 + Nginx - 需要IsTomcat Native吗?

这是我的第一个问题.如果我犯了错误,只需指出它,我下次就会改进它.我是Java Dev,是Linux的新手.我在带有Tomcat 7的VPS上部署我的Spring MVC应用程序,并使用nginx作为代理服务器.在互联网上冲浪几天后,我发现它可能是一个很好的组合,而不是使用带有apache的tomcat.我将更多地了解nginx可以做些什么.目前,nginx处理来自客户端的SSL,Tomcat位于同一台机器上,并作为具有HTTP连接器的后端服务器(Tomcat和Nginx之间没有SSL).我也使用limit_req模块作为基本的HTTP Flood保护.当使用Tomcat作为Web服务器时,我也了解APR - Tomcat本机库.每当我启动我的tomcat时,它都说我的APR没有找到.

  1. 在这种情况下(nginx + tomcat http连接器)我是否需要为Tomcat安装APR lib以加速我的服务器?
  2. 通过使用代理缓存img,css,我是否有益...
  3. 谁用这种配置处理静态文件?如果tomcat有,我们需要安装APR,对吧?
  4. 有没有办法在使用代理时保护某些请求模式(如登录页面)?

我的nginx conf:

server {
    listen  443 ssl;    
        server_name  domain;
    ssl on;
    ssl_certificate /etc/nginx/ssl/domain.crt;
    ssl_certificate_key /etc/nginx/ssl/domain.key;

    location / {
                proxy_pass http://localhost:8080;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header X-Forwarfed-For $proxy_add_x_forwarded_for;    
    }
}

server {
        listen      80;
        server_name domain;
        return 301 https://$server_name$request_uri;
}
Run Code Online (Sandbox Code Playgroud)

tomcat reverse-proxy nginx apr

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

在子目录中为node.js配置apache2

我有一个运行的网站,比方说,example.com它使用apache.我正在写的,我想通过访问node.js的一个应用程序example.com/app,并有我的node.js服务器认为example.com/app/example.com/app/users/users.我尝试通过ProxyPass使用我在网上找到的一些教程来做到这一点,但这并不能完全给我我正在寻找的东西(除非我没有设置正确).

这是ProxyPass我正在使用的:

ProxyPass /app/ http://127.0.0.1:3000/
ProxyPassReverse /app/ http://127.0.0.1:3000/
Run Code Online (Sandbox Code Playgroud)

但是当我去example.com/app/users我的节点服务器认为我正在尝试访问//users哪个显然会抛出一个404.任何帮助,将不胜感激.谢谢.

apache debugging reverse-proxy mod-proxy node.js

5
推荐指数
0
解决办法
572
查看次数

如何配置Sonar以使用SSL客户端证书进行身份验证

我有一个反向代理,使用SSL客户端证书对用户进行身份验证.我试图让Sonar V4使用来自反向代理的证书传递的凭据.然而,到目前为止,我对Sonar的运气并不乐观.

但是,我确实已经与Jenkins和Trac合作了.

apache reverse-proxy ssl-certificate sonarqube

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

包含百分号(%)的IIS反向代理重新编码URL

我正在尝试使用IIS 7.5,应用程序请求路由 3.0(ARR)和URL重写 2.0 为Jenkins设置反向代理。

我的代理服务器大多数都在工作,但是遇到包含百分号(%)的URL的问题。

无论我如何尝试,代理都坚持对重写的URL中的百分号进行解码或重新编码。

这就是我想要重写URL的方式:

http://my.proxy/a%2Fb -> http://my.host:8080/a%2Fb
Run Code Online (Sandbox Code Playgroud)

这是实际重写URL的方式:

http://my.proxy/a%2Fb -> http://my.host:8080/a/b
- or -
http://my.proxy/a%2Fb -> http://my.host:8080/a%252Fb
Run Code Online (Sandbox Code Playgroud)

如何获得IIS \ ARR \ Rewrite来停止对重写的URL进行重新编码?

我尝试过的事情:

  1. 普通的反向代理(将URL重写为http://my.host:8080/a/b):

    <rule name="ReverseProxyInboundRule1" stopProcessing="true"> <match url="(.*)" ignoreCase="true" /> <action type="Rewrite" url="http://my.host:8080/{R:1}" /> </rule>

  2. 使用UNENCODED_URL服务器变量(将URL重写为http://my.host:8080/a%252Fb):

    <rule name="ReverseProxyInboundRule1" stopProcessing="true"> <match url="(.*)" ignoreCase="false" /> <conditions logicalGrouping="MatchAll"> <add input="{UNENCODED_URL}" pattern="/(.*)" /> </conditions> <action type="Rewrite" url="http://my.host:8080/{C:1}" /> </rule>

  3. 只需直接输入网址(作为测试-还将网址重写为http://my.host:8080/a%252Fb):

    <rule name="ReverseProxyInboundRule1" stopProcessing="true"> <match url="(.*)" …

iis reverse-proxy urlencode url-rewrite-module arr

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

Socket.io客户端javascript文件位置(使用nginx反向代理)

我正在尝试在同一服务器/端口上运行多个NodeJS应用程序,使用nginx作为代理实际运行的Node应用程序的反向代理.

server {
    listen       8000;
    server_name  node.domain.com;
    root         /var/www/node;

    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-NginX-Proxy true;

    # Enables WS support
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_redirect off;

    location / {
        proxy_pass http://127.0.0.1:8001;
    }

    location /irc/ {
        proxy_pass http://127.0.0.1:8002;
    }

    location /voidwalker/ {
        proxy_pass http://127.0.0.1:8003;
    }
}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我forever在不同的子目录中运行(使用)不同的项目(NodeJS应用程序)/var/www/node.

但我想在我的一个项目中使用socket.io.在socket.io文档中,它声明我应该使用<script src="/socket.io/socket.io.js"></script>在客户端加载socket.io-client,它返回404:

GET http://node.domain.com/socket.io/socket.io.js 404 (Not Found)
Run Code Online (Sandbox Code Playgroud)

我猜这是因为我正在代理请求但我并不完全理解这个过程在内部是如何工作的,我希望能够让它发挥作用.

关于这一点需要注意的是我必须使用<link rel="stylesheet" href="/voidwalker/css/main.css">加载我的CSS,而我宁愿使用<link rel="stylesheet" href="/css/main.css">以防我想在特定的子域/其他域上部署它(因为这是一个开发服务器). …

reverse-proxy nginx node.js

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

HAProxy反向代理SNI通配符

我的HAProxy配置需要一些帮助.我目前正在使用HAProxy 1.5通过改变的DNS条目反向代理它们来访问geoblocked网站.(https://github.com/trick77/tunlr-style-dns-unblocking).

现在我偶然发现了一个问题,因为我必须代理一个服务器的许多子域(比方说abc.xyz.com,def.xyz.com,...).是否可以通过使用类似*.xyz.com的东西为我的配置创建一个通配符,这实际上适用于SNI和该域的所有子域?

非常感谢你提前!

global
  daemon
  maxconn 200
  user haproxy
  group haproxy
  stats socket /var/run/haproxy.sock mode 0600 level admin
  log /dev/log  local0 debug
  pidfile /var/run/haproxy.pid
  spread-checks 5

defaults
  maxconn 195
  log global
  mode http
  option httplog
  option abortonclose
  option http-server-close
  option persist
  option accept-invalid-http-response

  timeout connect 20s
  timeout server 120s
  timeout client 120s
  timeout check 10s
  retries 3

# catchall ------------------------------------------------------------------------

frontend f_catchall
  mode http
  bind *:80
  log global
  option httplog
  option accept-invalid-http-request

  capture request  header Host len …
Run Code Online (Sandbox Code Playgroud)

reverse-proxy haproxy sni

5
推荐指数
2
解决办法
4629
查看次数

实现行为类似于nginx的Undertow反向代理

出于开发目的,并不是每个人都可以在其计算机上安装nginx(例如Windows环境中的开发人员),但是我们希望能够做一个行为类似于nginx的反向代理。

这是我们非常具体的情况:

我们希望从http://0.0.0.0:8080提供这两种服务

所以我们想这样映射它:

这样,它的工作方式类似于带有URL重写反向代理的Nginx。

我签出了Undertow源代码和示例,甚至查看了这个特定示例:Reverse Proxy Example,但这是一个负载均衡器示例,但没有找到任何满足我需要的示例。

另外,我知道Undertow可以做到这一点,因为我们知道可以通过Undertow组件配置来配置WildFly来涵盖此特定情况,而不会出现问题,但是我们希望自己将其实现为本地开发的轻量级解决方案。

有人知道这样做的例子吗?或任何具有足够信息来实现此目的的文档?因为我也阅读了Undertow的有关反向代理的文档,但这对您毫无帮助。

谢谢

java spring reverse-proxy undertow

5
推荐指数
2
解决办法
2314
查看次数

可以使用Owasp Zap通过HTTPS连接代理所有http和https流量吗?

我刚刚开始使用Zap,并且已成功在Firefox和Chrome中运行它.

我想用它来自动为非https网站提供SSL证书.

所以,例如,我希望它能够服务

http://example.com

https://example.com

即使example.com通常不提供SSL证书.

这将允许我测试本地开发站点,而无需为它们创建自签名证书,或者必须使用Web服务器配置证书.

我试图将我的开发端口(18000)移植到端口443,但我的网络服务器没有提供SSL证书,连接失败.我也试过这个与sni终结者 zap插件没有运气,虽然它感觉它是超级接近!

有什么建议?

reverse-proxy owasp zap

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