您如何在开发中从 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.keyserver.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 服务器。对于developmenttest 环境,我需要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的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Xcode 中从管理器中删除应用程序?

如何在 Swift 中从相机或照片库加载图像 [关闭]

如何在颤动中从列表中删除项目时重新加载列表

您如何在功能应用程序中从Azure Key Vault引用密钥?

如何在 Linux 中从 C 执行 shell 脚本?

如何在 Swift 中从数组中删除一个元素