【问题标题】:How do you serve ember-cli from https://localhost:4200 in development您如何在开发中从 https://localhost:4200 提供 ember-cli
【发布时间】:2015-03-13 05:00:06
【问题描述】:

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

如何设置 ember-cli 以从 https 域中提供 index.html。

干杯

【问题讨论】:

    标签: ember.js ember-cli


    【解决方案1】:

    另见https://stackoverflow.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 你能再解释一下这个设置吗?
    猜你喜欢
    • 2019-11-27
    • 2017-10-18
    • 1970-01-01
    • 2018-09-16
    • 2017-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多