标签: reverse-proxy

如何在IIS/ASP.NET网站上使用varnish/squid?

我正在一个有很多图像的网站上工作(想想smugmug/flickr),根据我的阅读,flickr使用squid作为图像缓存.我的图像将存储在Amazon S3上,因此缓存服务器也有助于节省托管资金.我想通过以下配置听到它的想法是可行的.

  1. 我的ASP.NET/MVC应用程序在专用的Windows服务器上运行.
  2. 从SliceHost.com或Linode.com在单独的Linux服务器上运行的清漆(很可能我想缓存较小尺寸的缩略图,因此小VPS应该是好的).

这可以吗?我应该将域名指向运行清漆的服务器吗?

谢谢!

asp.net-mvc reverse-proxy

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

需要帮助设置:Apache反向代理

我在设置虚拟主机文件时遇到了一些问题.我想通过反向代理将vistors发送到正确的服务器.我当前的设置给了我一个内部错误.

我只有一个公共IP,并希望在正确的服务器名称条件下将访问者代理到其中一个本地虚拟服务器.

NameVirtualHost *:80

<VirtualHost *:80>
    ServerName sub.domain.com
    ServerAdmin me@domain.com
    ProxyPreserveHost On
    ProxyPass / http://192.168.1.11:80
    ProxyPassReverse / http://192.168.1.11:80
</VirtualHost>

<VirtualHost *:80>
    ServerName otherdomain.com
    ServerAdmin me@domain.com
    ProxyPreserveHost On
    ProxyPass / http://192.168.1.12:80
    ProxyPassReverse / http://192.168.1.12:80
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

如果有人能找到任何我做错的事情,或者有其他办法实现我的目标,我很乐意听到.

apache reverse-proxy virtual-hosts

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

Rails/Rack ... Rack :: ReverseProxy导致请求超时

我想我已经过头了,无法弄清楚如何调试或从哪里开始?!! 任何指导将不胜感激!

问题:

  • 开发环境:一切正常
  • 制作:我收到"请求超时"错误

目标:

让"www.site.com/blog"显示"blog.site.com"中的内容,而无需重定向/更改浏览器URL

建立

  • www.site.com是Heroku上的Rails应用程序
  • blog.site.com是Bluehost上的WordPress

所以我无法访问服务器配置

途径

使用rack-reverse-proxy gem,如何使用子目录而不是子域?jplewicke

履行

的Gemfile

gem "rack-reverse-proxy", :require => "rack/reverse_proxy"
Run Code Online (Sandbox Code Playgroud)

config.ru(在运行AppName :: Application 之前)

use Rack::ReverseProxy do
  reverse_proxy(/^\/blog(\/.*)$/,'http://blog.site.com$1',
  opts = {:preserve_host => true})
end
Run Code Online (Sandbox Code Playgroud)

配置/ routes.rb中

match "/blog" => redirect("/blog/")
Run Code Online (Sandbox Code Playgroud)

结果/问题

它在我的机器上开发效果很好,但是当我把它投入生产时它会超时.它不仅超时,而且之后整个应用程序被挂起或者其他东西,即每个请求都超时www.site.com(在尝试blog.site.com之前有效).大约5-10分钟后,www.site.com再次运作,但blog.site.com超时.

日志

2013-03-05 05:54:19 + 00:00应用web.1 - - 2013年开始获取66.108.140.26/cpe-66-108-140-26.nyc.res.rr.com获取"/资源" -03-05 05:54:19 +0000

2013-03-05 05:54:19 + 00:00 heroku router - - at = info method = GET path =/blog host = www.site.com fwd ="66.108.140.26/cpe-66-108-140- …

rack reverse-proxy ruby-on-rails heroku

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

如何从NewSingleHostReverseProxy读取响应

我已经创建了一个这样的反向代理:

func ProxyFunc(w http.ResponseWriter, r *http.Request) {
    u, err := url.Parse("http://mynetworkserverhere:8957/some/path/here/")
    if err == nil {
        proxy := httputil.NewSingleHostReverseProxy(u)
        proxy.ServeHTTP(w, r)
        //????

    } else {
        w.Write([]byte(err.Error()))
    }
}
Run Code Online (Sandbox Code Playgroud)

并从main调用它:

func main() {
   log.Printf("Starting...")
   http.HandleFunc("/", ProxyFunc)
   log.Fatal(http.ListenAndServe(":6060", nil))
}
Run Code Online (Sandbox Code Playgroud)

它可以从客户端按预期工作,但我想从代理中读取响应,我该怎么做?

reverse-proxy go

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

为什么httputil.NewSingleHostReverseProxy在某些www网站上导致错误?

在下面的示例中:

package main

import (
    "fmt"
    "log"
    "net/http"
    "net/http/httputil"
    "net/url"
)

func main() {
    p := new(Proxy)
    //host := "www.google.com" // WORKS AS EXPECTED
    host := "www.apple.com" // GIVES AN ERROR
    u, err := url.Parse(fmt.Sprintf("http://%v/", host))
    if err != nil {
        log.Printf("Error parsing URL")
    }
    p.proxy = httputil.NewSingleHostReverseProxy(u)
    http.Handle("/", p)
    log.Fatal(http.ListenAndServe("localhost:8000", nil))
}

type Proxy struct {
    proxy *httputil.ReverseProxy
}

func (p *Proxy) ServeHTTP(w http.ResponseWriter, r *http.Request) {
    p.proxy.ServeHTTP(w, r)
}
Run Code Online (Sandbox Code Playgroud)

将Chrome链接到'localhost:8000'时,将'www.google.com'与'www.apple.com'交换会导致此错误:

无效的网址

请求的URL"/"无效.参考编号#9.a61a32b8.1438231668.41733295

为www.apple.com做一点挖掘,我得到:

?  ~  curl --ipv4 -v …
Run Code Online (Sandbox Code Playgroud)

reverse-proxy http go

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

使用HTTP 204 vs 200 vs 404安全地表明资源不存在

在我的REST API中,我具有一些资源的常规CRUD端点。如果我这样做了,GET /items/42并且没有这样的项目,则正常的行为是返回404 NOT FOUND

但是,有一种情况与我有关。在这种情况下,客户端需要检查是否存在资源(由令牌隐式标识),如果不存在,请创建该资源。因此,客户端将尝试检索资源,并且如果404接收到a,则客户端应用程序将显示创建项目所需的UI,然后继续获取POST新资源。从某种意义上说,这是一种特殊的资源,因为由于其ID是从其他参数派生的,因此甚至在创建之前就已知道它。例如,考虑一个用户注册过程。客户会问“我存在吗?如果不存在->注册我”。

我真正关心的是我是否需要担心“虚假” 404:s?考虑服务器通常被API网关,反向代理等所包围,是否存在404 NOT FOUND由于与REST服务器本身无关的临时错误而导致周围实体产生的风险?如果是这样,它可能会诱使客户相信该项目尚未创建,并且应该立即创建。即使POST由于该项目已经存在而导致创建该项目的请求失败,这也不是很好,因为用户可能无缘无故地输入了数据等。

这是要考虑的问题还是过于偏执?我想,如果客户不能相信a 404是幂等的(当然,直到创建资源),还会出现许多其他问题。有没有实际情况,API网关或类似网关会404自行报告?

如果这是一个有效的场景,我是否需要一个“更安全”,更明确的响应,说该请求确实成功但未找到资源,例如使用200 OK带有空JSON正文或a {isRegistered: false},a 204 NO CONTENT或类似内容进行响应?这为其他奇怪的事情打开了-如果对不存在的资源的请求会200以空的正文来响应,则也许创建该项目将是a PUT而不是a POST,等等?这似乎是蠕虫的罐头……全部归结为“是否404保证给定资源不存在?”

rest reverse-proxy crud http-status-code-404 asp.net-web-api

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

通过ssl提供图像的简易反向代理

我创建了一个简单的基于Web的电子邮件客户端,如gmail.我想要显示图像,但为了使用我的ssl网站,我需要在ssl上提供所有图像(否则我会收到"混合内容"警告).所以我需要像gmail这样的反向代理来提供这些图像.

我将重写电子邮件中的所有图像URL以指向反向代理.例如:

我的反向代理是https://myreverseproxy.com

原始图片网址http://stuff.com/image1.jpg

我将重写网址为https://myreverseproxy.com?image-url=http://stuff.com/image1.jpg

当反向代理获得请求" https://myreverseproxy.com?image-url=http://stuff.com/image1.jpg "时,它将从查询参数image-url获取原始图像(http:// stuff.com/image1.jpg),获取图像,并将其返回给https://myreverseproxy.com?image-url=http://stuff.com/image1.jpg的请求者.

是否有任何服务可以开箱即用?我可以写一个简单的吗?我是否已经为此安装了任何库或解决方案?

我对任何语言和任何平台都持开放态度......我只想解决这个问题.

https gmail reverse-proxy mixed-content

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

Spring Boot和Nginx集成

在我的项目中,使用Spring引导和默认的tomcat服务器开发Web应用程序.我使用NGINX作为负载均衡器,并在NGINX配置中配置了我的spring-boot-web-app,如下所示:

location /spring-boot-web-app {
     proxy_pass http://spring-boot-web-app/
}

http {
    upstream /spring-boot-web-app {
        server <IP_of_spring_boot_app>:<Port_of_spring_boot_app>
    }
}
Run Code Online (Sandbox Code Playgroud)

现在让我们分别说NGINX IP和端口为nginx_ipnginx_port.我的网络应用程序的工作URL也是:http:// web_app_ip:web_app_port/rest/echo/hi

上面的URL工作正常.但是当我尝试通过NGINX点击相同的URI时,它会抛出404.通过NGINX使用的URL为: http:// nginx_ip:nginx_port/spring-boot-web-app/rest/echo/hi

有什么我想念的吗?

reverse-proxy nginx proxypass docker spring-boot

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

HttpClient从Kestrel + IIS调用缓慢

我在一个IIS反向代理后面的Kestrel中运行了一个简单的asp.net core 2.0 WebApi应用程序.单个路由非常简单,它只是发出一个http请求:

using (HttpClient client = new HttpClient())            
{
    client.BaseAddress = new Uri("http://www.google.ca");               
    HttpResponseMessage response = await client.GetAsync("/search?q=test&oq=test");

    return Ok();
}
Run Code Online (Sandbox Code Playgroud)

但是,此请求始终需要2-3秒才能完成.然而,如果我在没有IIS的情况下直接运行Kestrel,相同的代码需要大约100ms.

我按照所有Microsoft 文档来配置使用IIS的kestrel.

iis reverse-proxy dotnet-httpclient kestrel-http-server asp.net-core-2.0

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

Traefik-Docker生成的前端的简称

有什么方法可以自定义/缩写前端名称,该名称由docker使用标签自动创建。例如,我有这个长名:
frontend-Host-dashboard-test-local-www-dashboard-test-local-0

对于后端,我们可以使用以下标签:
"traefik.backend=traefik"

长前端名称和短后端名称的示例

文件生成的前端和后端绝对缩短,它们也没有前端/后端前缀。

reverse-proxy docker traefik

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