如何运行角度通用 HTTPS

Posted

技术标签:

【中文标题】如何运行角度通用 HTTPS【英文标题】:How to run angular universal HTTPS 【发布时间】:2019-10-12 02:15:25 【问题描述】:

我在主页上关注 Angular Universal:https://angular.io/guide/universal 如果没有通用,我使用命令

运行我的 Angular 项目

ng serve --ssl true --ssl-key /node_modules/browser-sync/lib/server/certs/server.key --ssl-cert /node_modules/browser-sync/lib/server/certs/server。 crt --host 0.0.0.0

现在,我将通用添加到我的项目中,但不知道如何设置它使用“https”运行。 请帮帮我。

这里是我的 server.ts

导入'zone.js/dist/zone-node'; 从“@angular/core”导入 enableProdMode; // 快速引擎 从“@nguniversal/express-engine”导入 ngExpressEngine; // 导入模块映射以进行延迟加载 从“@nguniversal/module-map-ngfactory-loader”导入 provideModuleMap; 从'express'导入*作为快递; 从“路径”导入 join; // 更快的服务器渲染 w/ Prod 模式(从不需要开发模式) enableProdMode(); // 快递服务器 const app = express(); 常量 PORT = process.env.PORT || 4000; const DIST_FOLDER = join(process.cwd(), 'dist/browser'); // * 注意 :: 将此保留为 require(),因为此文件是从 webpack 动态构建的 const AppServerModuleNgFactory, LAZY_MODULE_MAP = 要求('./dist/server/main'); // 我们的通用快递引擎(找到@https://github.com/angular/universal/tree/master/modules/express-engine) app.engine('html', ngExpressEngine( 引导程序:AppServerModuleNgFactory, 提供者:[ 提供ModuleMap(LAZY_MODULE_MAP) ] )); app.set('视图引擎', 'html'); app.set('views', DIST_FOLDER); // Express Rest API 端点示例 // app.get('/api/**', (req, res) => ); // 从 /browser 提供静态文件 app.get('.', express.static(DIST_FOLDER, 最大年龄:'1y' )); // 所有常规路由都使用通用引擎 app.get('*', (req, res) => res.render('index', req ); ); // 启动节点服务器 app.listen(PORT, () => 控制台.log(Node Express server listening on http://localhost:$PORT); );

【问题讨论】:

您可以为 express 启用 https (***.com/questions/11744975/…),但如果您使用反向代理(Apache、nginx),那么您只需将代理配置为使用 https 【参考方案1】:

所以这个问题已经打开太久了:

我自己试图解决这个问题。我的第一种方法是更改​​ server.ts express 服务器,以便它创建一个 HTTPS 实例而不是 HTTP 实例。这失败了,因为它试图在 docker 容器中启动文件。

所以回到开头,我用 HTTP 启动了节点服务器,并使用 Nginx 服务器作为代理连接到节点服务器。这还有一个好处是您的 Web 应用程序能够连接更多的客户端。

在你的 Nginx 配置文件中应该有这样的内容:

server 
  listen       80;
  listen       443 ssl;
  server_name  SERVER.com;

  ssl_certificate  /etc/nginx/ssl/live/SERVER.com/fullchain.pem;
  ssl_certificate_key /etc/nginx/ssl/live/SERVER.com/privkey.pem;
  ssl_dhparam /etc/nginx/dhparam/dhparam-2048.pem;

  location / 
    proxy_pass DESTINATION:PORT;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $host;
    proxy_cache_bypass $http_upgrade;
  

希望这会有所帮助;)

【讨论】:

以上是关于如何运行角度通用 HTTPS的主要内容,如果未能解决你的问题,请参考以下文章

如何使用角度通用在服务器端渲染中加载 json

如何从解决方案的角度正确配置 SonarQube MSBuild Scanner?

使用 nestjs 角度通用设置时找不到 api/graphql

仅适用于某些路线的角度通用渲染

角度通用安装会引发错误

如何使用模板驱动形式将角度路由与角度材料步进器(https://material.angular.io/components/stepper/overview)结合起来?