您如何在开发中从 https://localhost:4200 提供 ember-cli
Posted
技术标签:
【中文标题】您如何在开发中从 https://localhost:4200 提供 ember-cli【英文标题】:How do you serve ember-cli from https://localhost:4200 in development 【发布时间】:2015-03-13 05:00:06 【问题描述】:为了使我们的身份验证与我们的 ember 应用程序一起工作,我们需要从安全的 url 提供应用程序。我们有一个自签名的 ssl 证书。
如何设置 ember-cli 以从 https
域中提供 index.html。
干杯
【问题讨论】:
【参考方案1】:另见https://***.com/a/30574934/1392763。
如果您将始终使用 SSL,您可以在项目的 .ember-cli
文件中设置 "ssl": true
,这将导致 ember serve
命令默认使用 SSL,而无需每次都传递命令行标志。
默认情况下,ember-cli 将在项目根目录中的 ssl 文件夹中查找 server.key 和 server.crt 文件但您也可以使用 --ssl-key
和 --ssl-cert
选项对其进行自定义,以提供备用路径。
如果您还没有用于开发的自签名 SSL 证书,您可以按照以下说明轻松生成一个:https://devcenter.heroku.com/articles/ssl-certificate-self
示例.ember-cli:
"disableAnalytics": false,
// Use SSL for development server by default
"ssl": true,
"ssl-key": "path/to/server.key",
"ssl-cert": "path/to/server.crt"
【讨论】:
我正在尝试这样做并不断收到permission denied, open 'ssl/server.key'
- 我已经尝试过 chowning 并且仍然遇到问题。有任何想法吗?谢谢!
有趣,您使用的是自签名/自生成证书还是真正的 ssl 证书?
自生成 - 我的问题是,如果您希望它在默认 SSL 端口上启动,您必须使用 sudo
启动 ember。我不建议这样做,因为这意味着你的很多文件都归 root 拥有,这很让人头疼,尽管在紧要关头它成功了。
啊,好吧,如果您尝试在端口 443(默认安全端口)上提供服务,您必须以 sudo
运行。但是,您可以在 ember-cli 的默认端口 4200 上使用 HTTPS/SSL 运行 ember serve
命令。【参考方案2】:
编辑
对于谷歌人来说,这不再是事实。使用 ember-cli --ssl
感谢 xdumaine 7 月 12 日 10:08***
强调文本你不能直接从 ember-cli 不把你的手放在我不推荐的代码中:)
如果你想走这条路看:node_modules/ember-cli/lib/tasks/server/express-server.js
,也可以进node_modules/ember-cli/lib/tasks/server/livereload-server.js
对于那些仍然想通过网络服务器的人:
但是还有其他更简洁的解决方案,例如使用 nginx 作为(反向)代理 :) 或者直接从 /dist 文件夹中的 nginx 提供服务 :) 使用 nginx 反转基本示例(未尝试使用 ssl,但理论上应该可以工作:p):
server
listen 443;
server_name *.example.com;
ssl on;
ssl_certificate /path/to/your/certificate.crt;
ssl_certificate_key /path/to/your/key.key;
location /
proxy_pass http://localhost:4200;
我说的是 nginx,但实际上任何网络服务器都可以做到这一点:)
NaB 不要在生产中使用ember serve
【讨论】:
感谢您的回答。我同意我永远不会在生产中运行 ember 服务器。对于development
和test
环境,我需要https
。鉴于 nginx 会在本地 mac 环境中工作吗?
是的,我认为它会 :) 它很容易设置,而且它是“免费的”,所以最好的方法是尝试一下。
对于谷歌人来说,这不再是真的。使用ember-cli --ssl
【参考方案3】:
我将tunnels gem 与pow port-proxying 一起使用。
更新:更多细节
使用真正的 Web 服务器(就像之前使用 nginx 的答案一样)是一个很好的方法,并且可能更像您的生产设置。但是,我管理着很多不同的项目,并且对管理我所有项目的 nginx 配置文件并不感兴趣。 Pow 可以轻松地在一台开发机器上的 80 端口上创建许多不同的项目。
Pow 有两种主要模式。主要功能是成为 Rack 应用程序的简单服务器,通过自定义本地域访问,例如 http://my-application.dev/
。这是通过将~/.pow/my-application
符号链接到包含机架应用程序的目录来完成的。但是,pow 也可以通过创建仅包含端口号的文件(例如echo 4200 > ~/.pow/my-application
),将对自定义本地域的请求代理到指定端口。这使得使用实际域在本地开发变得很容易(另外,作为旁注,子域也可以工作,这非常方便;例如,foobar.my-application.dev
也将路由到my-application
)。
Tunnels 使 pow 与 https 一起使用变得容易。
设置
# Install pow
curl get.pow.cx | sh
# Set up pow proxy for your ember app
echo 4200 > ~/.pow/my-application
# Start your ember server
ember serve # specify a port here if you used something else for pow proxy
# Check that http://my-application.dev correctly shows your ember app in the browser
# Install tunnels
gem install tunnels # possibly with sudo depending on your ruby setup
# Start tunnels
sudo tunnels
# Now https://my-application.dev should work
【讨论】:
Amiel 你能再解释一下这个设置吗?以上是关于您如何在开发中从 https://localhost:4200 提供 ember-cli的主要内容,如果未能解决你的问题,请参考以下文章