如何运行 Angular Universal HTTPS

11 浏览
0 Comments

如何运行 Angular Universal HTTPS

我在主页上遵循了Angular Universal的指南:https://angular.io/guide/universal
\n
\n在没有使用Universal的情况下,我使用以下命令来运行我的Angular项目:
\n

\nng 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
\n

\n现在,我已经将Universal添加到我的项目中,但是不知道如何设置它以运行“https”。
\n请帮助我,谢谢。\n这是我的server.ts文件内容:\n

\nimport \'zone.js/dist/zone-node\';\n import {enableProdMode} from \'@angular/core\';
\n // Express引擎
\n import {ngExpressEngine} from \'@nguniversal/express-engine\';
\n // 导入模块映射以进行懒加载\n import {provideModuleMap} from \'@nguniversal/module-map-ngfactory-loader\';
\n
\n import * as express from \'express\';
\n import {join} from \'path\';
\n
\n // 更快的服务器渲染(Prod模式下不需要开发模式)
\n enableProdMode();
\n
\n // Express服务器
\n const app = express();
\n
\n const PORT = process.env.PORT || 4000;
\n const DIST_FOLDER = join(process.cwd(), \'dist/browser\');
\n
\n // * 注意:由于此文件是通过webpack动态构建的,因此请保留require()的方式
\n const {AppServerModuleNgFactory, LAZY_MODULE_MAP} = require(\'./dist/server/main\');
\n
\n // 我们的Universal express-engine(在 https://github.com/angular/universal/tree/master/modules/express-engine 找到)
\n app.engine(\'html\', ngExpressEngine({
\n bootstrap: AppServerModuleNgFactory,
\n providers: [
\n provideModuleMap(LAZY_MODULE_MAP)
\n ]
\n }));
\n
\n app.set(\'view engine\', \'html\');
\n app.set(\'views\', DIST_FOLDER);
\n
\n // 示例的Express Rest API端点
\n // app.get(\'/api/**\', (req, res) => { });
\n // 从/browser目录提供静态文件
\n app.get(\'.\', express.static(DIST_FOLDER, {
\n maxAge: \'1y\'
\n }));
\n
\n // 所有常规路由都使用Universal引擎
\n app.get(\'*\', (req, res) => {
\n res.render(\'index\', { req });
\n });
\n
\n // 启动Node服务器
\n app.listen(PORT, () => {
\n console.log(Node Express服务器正在监听 http://localhost:${PORT});
\n });
\n

0
0 Comments

这个问题的原因是作者尝试在Angular Universal中运行HTTPS时遇到了困难。他首先尝试修改server.ts文件中的express服务器,使其创建一个HTTPS实例而不是HTTP实例,但是由于在docker容器中启动该文件时失败了。所以作者回到了最初的方案,使用HTTP启动node服务器,并使用Nginx服务器作为代理连接到node服务器。这样做的好处是您的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;

}

}

希望这能帮到你 😉

0