我使用grunt-connect-proxy
将某些页面反向代理到我的CloudFront网站,但无法正常工作。
ENV:
^0.4.5
^0.9.0
,^0.2.0
,我尝试过的事情
http-proxy
(成功):httpProxy.createProxyServer({target: {
protocol: 'http:',
host: 'myhostname.com',
port: 80,
},
headers: {
host: 'myhostname.com'
}}).listen(8080)
curl
(成功):curl -v http://myhostname.com/signin
Nginx
(成功):location ~* ^/(signin|styles|scripts) {
proxy_pass http://myhostname.com;
}
使用grunt-connect-proxy
失败
connect: {
server: {
options: {
open: true,
base: ['app'],
middleware: function(connect, options, middlewares) {
if (!Array.isArray(options.base)) {
options.base = [options.base];
}
middlewares.push(modRewrite([
'^\\/customer-portal\\/((?!\\.).)*$ /index.html'
]));
middlewares.push(connect.static(options.base[0]));
middlewares.push(require('grunt-connect-proxy/lib/utils').proxyRequest)
return middlewares;
}
},
proxies: [{
context: ['/signin', '/scripts', '/styles'],
host: 'myhostname.com',
port: '80',
https: false,
}]
},
}
它从CloudFront获取403代码(我不确定CloudFront中的403是404还是否)。
如果我将headers
添加到proxies
proxies: [{
...
headers: {
'host': 'myhostname.com'
}
...
}]
我从chrome中收到ERR_CONTENT_DECODING_FAILED
错误。
那么,什么是正确的配置?
答案 0 :(得分:0)
我已经通过http-proxy
用客户中间件解决了这个问题,放弃了使用grunt-connect-proxy
,这样的代码:
middlewares.push(function(req, res, next) {
if(someRegex.test(req.url) {
proxy.web(req, res, {target: 'myhostname.com'})
} else {
return next();
}
})