【问题标题】:Run MEAN stack on SSL在 SSL 上运行 MEAN 堆栈
【发布时间】:2017-10-10 11:10:09
【问题描述】:

我想在 https 而不是 http 上托管我的网站。我在前端使用 AngularJs,在后端使用 NodeJs。我将使用https://letsencrypt.org/ 作为 SSL 证书。

我无法找到在 https 上运行两个网络服务器的方法。

注意:我不想通过 url 将前端与后端分开。

我希望我的观点清楚。

有什么帮助吗?

【问题讨论】:

  • AngularJS 不是网络服务器。您的 SSL 配置将在 Node 中完成。
  • Angular 代码中将只使用节点 API。SSL 证书将添加到 nodejs 代码中。
  • @SyedAyeshaBebe 我们需要在 https 上运行 angularjs 和 nodejs,否则我们可能会遇到浏览器安全策略问题
  • @JorgeValle 是的 AngularJS 本身不是一个 Web 服务器。
  • @VedanshAgrawal 您需要做的就是将您的 angularjs 文件保存在服务器和 nodejs 文件中。在 nodejs 的服务器代码中,您需要使用 ssl 证书。接下来无论您使用节点创建的 api 那些api将用于角度代码。您可以使用域名调用您的角度文件。例如 https:// example.com/login 这里 login 只是该文件中的 login.html 文件,您将使用 api位于example.com...中的nodejs的数量...

标签: angularjs node.js ssl https lets-encrypt


【解决方案1】:

我正在展示一个简单的应用程序,即 angularjs 和 nodejs 都适用于 https。首先将此应用程序保存在服务器(整个文件夹)中。其次创建一个 public 文件夹并将这个index.html 文件放入其中。这是它的代码

 <!DOCTYPE html>
     <html lang="en">
     <head>
     <script src="angular.min.js"></script>
     <script src="app.js"></script>
     </head>
     <body ng-app="myApp">
     <div ng-controller="myCtrl">
     <form>
        Author:
        <input type="text" ng-model="data.author">
        <br>
        <br> Title:
        <input type="text" ng-model="data.title">
        <br>
        <br> Body:
        <input type="author" ng-model="data.body">
        <br>
        <br>
        <input type="submit" value="Submit" ng-click="submit()">
      </form>
      </div>
      </body>
      </html>

这是角码将文件保存为app.jspublic文件夹中。

var app = angular.module('myApp', []);
 app.controller('myCtrl', function($scope,$http) {
 $scope.data = {};
$scope.submit= function(){
    console.log('clicked submit');
    $http({
        url: 'https://localhost:3443/blah',
        method: 'POST',
        data: $scope.data
    }).then(function (httpResponse) {
        console.log('response:', httpResponse);
    })
   }
 });

您需要有angular.min.js 文件。将此文件保存在public 文件夹中。我对这个文件了解不多。基本上我来自后端。我对此的理解是没有这个文件我们无法加载角度代码。所以这里是文件https://github.com/Syedayesha/MEAN-Stack/blob/master/public/angular.min.js的链接。

接下来服务器代码将文件保存为server.js。将此文件保存在根文件夹中。

var express = require('express');
var bodyParser = require('body-parser');
var mysql = require('mysql');
var app = express();
var fs=require('fs');
var http=require('http');
var https=require('https');
    app.use(bodyParser.json({limit: '50mb'}));
    app.use(express.static('public'));
var connection = mysql.createConnection({
  host: 'localhost',
  user: 'root',
  password: '',
  database: 'testn'
   });
   connection.connect();
var options = {
 key: fs.readFileSync('privkey.pem'),
 cert: fs.readFileSync('cert.pem')
}
    app.post('/blah', function(req, res, next) {
    var cope = req.body;
    console.log('request received:', req.body);
   var query = connection.query('insert into form set ?', cope, function (err,     result) {
    if (err) {
        console.error(err);
        return res.send(err);
    } else {
        return res.send('Ok');
    }
    });
    //res.send('received the data.');
    });
    var server = http.createServer(app).listen(3000);
var server1 = https.createServer(options,app).listen(3443);
console.log('server running on 3443');

在这里,我与mysqldb 建立了联系。您需要在server.jsoptions 变量附近提供您的域 ssl 证书。您需要在根文件夹中有 ssl 证书。您可以从我的 github 下载整个项目。这是链接https://github.com/Syedayesha/MEAN-Stack

使用node server.js运行节点服务器,打开浏览器输入https://localhost:3443/index.html。就是这样 !!!您将获得index.html 文件并输入数据并检查数据是否存储在db 中。实际上我正在使用 xampp,所以我使用的是 apache 服务器。这样我就将 url 作为 localhost 运行。您可以使用您的站点名称 example https://example.com:3443/index.html 运行 url。您需要将 角码 app.js 中的url 更改为https://example.com:3443/blah。希望对您有所帮助。

【讨论】:

    【解决方案2】:

    通常你应该将你的 Node 服务放在像 Apache 或 Nginx 这样的反向代理之后,并使用 ProxyPass (Apache) 或 proxy_pass (Nginx) 指令将流量发送到你的 Node 服务。然后您可以使用 Certbot 为您的 Apache 或 Nginx 实例配置 HTTPS,您无需为您的 Node 服务配置 HTTPS(只要它运行在同一主机上)。

    除了更容易设置 HTTPS 之外,使用反向代理比直接使用 Node 更好,因为您可以轻松添加额外的 Node 进程以更好地利用所有 CPU。

    【讨论】:

      猜你喜欢
      • 2016-08-05
      • 1970-01-01
      • 1970-01-01
      • 2017-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-19
      • 2018-07-06
      相关资源
      最近更新 更多