Docker在GCP VM中组合运行2个容器:
version: '2'
services:
db:
image: mongo:3
ports:
- "27017:27017"
api-server:
build: .
ports:
- "443:8080"
links:
- db
volumes:
- .:/www
- /www/node_modules
端口重定向设置为443,防火墙已配置(我猜),但仍然无法通过https连接到服务器。它仅在http://ip_address:443
上可用我做错了什么?
答案 0 :(得分:1)
你做错了是你假设只是因为你使用的是端口443,流量就变成了SSL。
如果端口<?php
session_start();
include('config.php');
if(!isset($_SESSION['username'])){
header("location: login.php");
}
$orderId = $_POST['id'];
$qry = "DELETE FROM orders WHERE order_id ='$orderId'";
$result=mysqli_query($connection,$qry);
上的某些内容可以443
访问,则意味着您正在443上运行普通的HTTP应用程序。
因此,您的NodeJS服务器将创建一个没有证书和私钥的简单服务器。
您有两种选择
在代码中使用SSL服务器
您可以更新NodeJS代码以作为https服务器进行监听。像下面的东西
http://<IP>:443/
将nginx放在前面以便提供服务
您可以添加带有SSL配置的nginx,然后代理将流量传递到NodeJS应用
const https = require('https');
const fs = require('fs');
const options = {
key: fs.readFileSync('test/fixtures/keys/agent2-key.pem'),
cert: fs.readFileSync('test/fixtures/keys/agent2-cert.pem')
};
https.createServer(options, (req, res) => {
res.writeHead(200);
res.end('hello world\n');
}).listen(8000);
您需要创建一个nginx配置文件
version: '2'
services:
db:
image: mongo:3
ports:
- "27017:27017"
api-server:
build: .
volumes:
- .:/www
- /www/node_modules
nginx:
image: nginx
ports:
- "80:80"
- "443:443"
volumes:
- ./default.conf:/etc/nginx/conf.d/default.conf
- ./www:/usr/local/var/www
PS:有关详细信息,请参阅https://www.sitepoint.com/configuring-nginx-ssl-node-js/