你如何在开发中从 https://localhost:4200 服务 ember-cli

How do you serve ember-cli from https://localhost:4200 in development

为了让我们的身份验证与我们的 ember 应用程序一起工作,我们需要从安全的 url 为该应用程序提供服务。我们有一个自签名的 ssl 证书。

如何设置 ember-cli 以服务 index.html 形成 https 域。

干杯

编辑

对于谷歌员工来说,这不再是事实。使用 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

我用的是tunnels gem with pow port-proxying.

更新:更详细

使用真正的网络服务器(就像之前对 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

另见 。

如果您将始终使用 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"
}