首页 > 解决方案 > SSl 适用于前端,但不适用于后端

问题描述

我有一个 MERN 堆栈网站,我使用 nginx 服务。我的后端服务器通过 http 在端口 5000 上运行。SSL 适用于我的前端,但我无法向我的快速服务器发出 https 请求。我该如何解决这个问题?我应该为我的后端使用另一个 SSL 吗?

这就是我的 express server.js 的样子:

const express = require("express");
const dotenv = require("dotenv");
const routers = require("./routers/index");
const connectDatabase = require("./helpers/database/connectDatabase");
const path = require("path");
const cors = require("cors");

// Environment Variables
dotenv.config({
  path: "./config/env/config.env",
});

// MongoDb Conenction
connectDatabase();

const app = express();

// Express - Body Json
app.use(express.json());

const PORT = process.env.PORT;

// CORS
app.use(cors());


// Router Middleware
app.use("/api", routers);



app.listen(PORT, () => {
  console.log(
    `App Started on PORT: ${process.env.PORT} : ${process.env.NODE_ENV}`
  );
});

这就是 nginx/sites-avaliable/my-site.com 的样子:

server {

        root /var/www/my-site.com/html;
        index index.html index.htm index.nginx-debian.html;

        server_name my-site.com www.my-site.com;

        location / {
                try_files $uri /index.html;
        }

    listen [::]:443 ssl ipv6only=on; # managed by Certbot
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/my-site.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/my-site.com/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot


}
server {
    if ($host = www.my-site.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    if ($host = my-site.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


        listen 80;
        listen [::]:80;

        server_name my-site.com www.my-site.com;
    return 404; # managed by Certbot




}

标签: expressnginxsslbackend

解决方案


推荐阅读