2017-10-10 10 views
2

httpの代わりにhttpsに自分のサイトをホストしたいと思います。私はフロントエンドにAngularJs、バックエンドにNodeJsを使用しています。 SSL証明書にhttps://letsencrypt.org/を使用します。SSLで平均スタックを実行

httpsで両方のWebサーバーを実行する方法を見つけることができません。

注:フロントエンドとバックエンドをURLで区切りたいとは限りません。

私は私の指摘を明確にしたいと思う。

ご協力いただきありがとうございます。

+2

AngularJSはウェブサーバーではありません。 SSL設定はノードで行われます。 –

+0

角度コードではノードapisだけが使用されます.SSL証明書はnodejsコードに追加されます。 –

+0

@SyedAyeshaブラウザのセキュリティポリシーに問題があるかもしれないので、httpsでangularjsとnodejを実行する必要があります。 –

答えて

1

私は単純なアプリケーションを提示しています。すなわち、angularjとnodejの両方がhttpsで動作します。まず、このアプリケーションをサーバー(フォルダ全体)に保存します。第二にパブリックフォルダを作成し、it.Hereでこの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.jsとしてファイルを保存しています。

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); 
    }) 
    } 
}); 

あなたはパブリックフォルダにこのファイル.Keep angular.min.jsファイルを持っている必要があります。私はこのファイルについて詳しくは分かりません。基本的に私はバックエンド側から来ています。私が理解していることは、このファイルがなければ角度コードをロードできないことです。ここにファイル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に接続しました。 のオプションに近いドメインSLS証明書をserver.jsに入力する必要があります。ルートフォルダにSSL証明書が必要です。あなたは私のgithubからプロジェクト全体をダウンロードすることができます。ここにリンクhttps://github.com/Syedayesha/MEAN-Stackがあります。

node server.jsを使用してノードサーバーを実行し、ブラウザーを開き、https://localhost:3443/index.htmlと入力します。それでおしまい !!! index.htmlファイルを取得してデータを入力し、データがdbに格納されているかどうかを確認します。実際に私はxamppで作業しているので、私はApacheサーバーを使用しています。私はlocalhostとしてURLを実行するように。サイト名の例https://example.com:3443/index.htmlを使用してURLを実行できます。そして、urlの角度コードapp.jsに変更する必要があります。https://example.com:3443/blahです。それが役に立てば幸い。

0

通常、ノードサービスをApacheやNginxのようなリバースプロキシの背後に置き、ProxyPass(Apache)またはproxy_pass(Nginx)ディレクティブを使用してノードサービスにトラフィックを送信する必要があります。次に、Certbotを使用してApacheまたはNginxインスタンス用にHTTPSを設定することができます。同じホスト上で実行されている限り、ノードサービス用にHTTPSを設定する必要はありません。

HTTPSを簡単に設定できるだけでなく、リバースプロキシを使用する方が、Nodeプロセスを追加してすべてのCPUをより有効に活用できるため、Nodeを直接使用するよりも優れています。

関連する問題