我最近尝试将SailsJS应用程序部署到AWS环境,因此我设置了相关的登台和生产环境文件。
但是,我遇到的一个持久性问题是我使用以下命令运行该应用程序:
sails lift --staging
我注意到我要么经常出现重定向,要么根本无法访问。
经过进一步的挖掘,我碰巧遇到了位于api/hooks/custom/index.js
文件中的以下代码:
// Next, if we're running in our actual "production" or "staging" Sails
// environment, check if this is a GET request via some other subdomain,
// for example something like `webhooks.` or `click.`. If so, we'll
// automatically go ahead and redirect to the corresponding path under
// our base URL, which is environment-specific.
// > Note that we DO NOT redirect virtual socket requests and we DO NOT
// > redirect non-GET requests (because it can confuse some 3rd party
// > platforms that send webhook requests.)
var configuredBaseSubdomain;
try {
configuredBaseSubdomain = url.parse(sails.config.custom.baseUrl).host.match(/^([^\.]+)\./)[1];
} catch (unusedErr) { /*…*/}
if ((sails.config.environment === 'staging' || sails.config.environment === 'production') && !req.isSocket && req.method === 'GET' && req.subdomains[0] !== configuredBaseSubdomain) {
sails.log.info('Redirecting GET request from `'+req.subdomains[0]+'.` subdomain...');
return res.redirect(sails.config.custom.baseUrl+req.url);
}//•
我试图在IRC频道和Gitter.im链接上询问,但是我的查询“说不出话来”,所以我以为我只是在这里问一下,留待讨论。有没有更好的方法来解决这个问题?
在使用URL http://ec2-xxx-xxx-xxx-xxx.locale-x.compute.amazonaws.com的AWS环境中进行部署或仅通过IP地址进行访问都被所使用的正则表达式捕获:
/^([^\.]+)\./
除非应用程序位于站点的根目录(haha)中,否则这将使部署变得非常困难。没有其他方法可以解决这个问题吗?
就目前而言,我必须将其注释掉,以便我的暂存应用程序可用/可测试。我还意识到,这可能是通过最初通过sails-generate项目创建我的项目时传递的参数来呈现的,但是我还没有找到它
答案 0 :(得分:0)
我遇到了同样的问题。似乎我们俩一次使用了生成器,导致生成了包含上述正则表达式的代码。现在,通过提交可以更改它,并且一旦您将存储库中的代码更改为下面的代码,它就可以再次正常工作!
https://github.com/balderdashy/sails-generate/commit/76e2096d8173d474b6152a67ff4cfa08c38e6460