我目前在AppFog上有两个应用程序,它们是。
http://sru-forums-prod.aws.af.cm/和http://sru-home-prod.aws.af.cm/
我的haProxy在我的计算机上本地运行,这是我当前的配置文件。
全球 调试
defaults
mode http
timeout connect 500ms
timeout client 50000ms
timeout server 50000ms
backend legacy
server forums sru-forums-prod.aws.af.cm:80
frontend app *:8232
default_backend legacy
最终目标是localhost:8232将流量转发到sru-home-prod,而localhost:8232 / forums / *将流量转发到sru-forums-prod。但是我甚至无法启动并运行一个简单的代理。
当我从这个配置文件中运行HAProxy时,我在localhost:8232收到AppFog 404 Not Found。
我错过了什么,这甚至可能吗?
编辑:
新配置有效,但现在我有一个端口60032回到响应中。
global
debug
defaults
mode http
timeout connect 500ms
timeout client 50000ms
timeout server 50000ms
backend legacy
option forwardfor
option httpclose
reqirep ^Host: Host:\ sru-forums-prod.aws.af.cm
server forums sru-forums-prod.aws.af.cm:80
frontend app *:8000
default_backend legacy
答案 0 :(得分:2)
您获得AppFog 404 Not Found的原因是因为AppFog上托管的应用程序是通过域名路由的。为了让AppFog知道为您提供的应用程序,域名必须在HTTP请求中。当你去localhost:8232 / forums /它发送localhost作为AppFog没有的域名作为注册的应用程序名称。
有一种解决此问题的好方法
1)将您的应用程序映射到第二个域名,例如:
af map <appname> sru-forums-prod-proxy.aws.af.cm
2)编辑/ etc / hosts文件并添加以下行:
127.0.0.1 sru-forums-prod-proxy.aws.af.cm
3)转到http://sru-forums-prod-proxy.aws.af.cm:8232/forums/,它将映射到本地计算机,但会成功通过您的haproxy,并以正确的主机名映射到AppFog上托管的应用程序。
这是一个正在运行的haproxy.conf文件,该文件使用类似的方法演示了迄今为止这对我们有何用处。
defaults
mode http
timeout connect 500ms
timeout client 50000ms
timeout server 50000ms
backend appfog
option httpchk GET /readme.html HTTP/1.1\r\nHost:\ aroundtheworld.appfog.com
option forwardfor
option httpclose
reqirep ^Host: Host:\ aroundtheworld.appfog.com
server pingdom-aws afpingdom.aws.af.cm:80 check
server pingdom-rs afpingdom-rs.rs.af.cm:80 check
server pingdom-hp afpingdom-hp.hp.af.cm:80 check
server pingdom-eu afpingdom-eu.eu01.aws.af.cm:80 check
server pingdom-ap afpingdom-ap.ap01.aws.af.cm:80 check
frontend app *:8000
default_backend appfog
listen stats 0.0.0.0:8080
mode http
stats enable
stats uri /haproxy