【问题标题】:Nginx configuration for SSL - React - Node - CloudflareSSL 的 Nginx 配置 - React - 节点 - Cloudflare
【发布时间】:2018-08-14 05:08:04
【问题描述】:

我真的是 Nginx 的菜鸟,我不知道如何正确配置 nginx,我的项目文件夹是它

/Client (react)
/Server (node)
/ (server config)

我之前有这个nginx 配置,一切正常

server {
    listen 80;

    server_name IP;

    location / {
        proxy_pass http://IP:3030;
        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;
    }
}

稍后在Cloudflare 我激活只有https,我的网站无法连接到端口:4000 上的后端,通过一些研究我发现我需要更改nginx 配置,这就是Cloudflare 指导我创作。

server {
  listen     80;
  listen     443;

  ssl        on;
  ssl_certificate         /root/certificate.pem;
  ssl_certificate_key     /root/key.key;

  server_name    mydomain.org www.mydomain.org;
  access_log     /var/log/nginx/nginx.vhost.access.log;
  error_log      /var/log/nginx/nginx.vhost.error.log;
  location / {   # i just paste everything i had on the previous config here
    proxy_pass https://IP:3030;
    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;
  }
}

所以基本上,网站加载但它无法处理对后端的请求。

如果你不知道为什么我有/server 文件夹和/ 文件夹,这是我的server.js 文件:

const express = require("express");
const path = require("path");
const app = express();

const port = process.env.PORT || 3030;
app.use(express.static(path.join(__dirname, "client/build")));
app.get("/*.png", (req, res) => {
  console.log(req.params[0]);
  res.sendFile(path.join(__dirname, "client/public/", req.params[0] + ".png"));
});
app.get("/*.jpeg", (req, res) => {
  console.log(req.params[0]);
  res.sendFile(path.join(__dirname, "client/public/", req.params[0] + ".jpeg"));
});

app.get("/*", (req, res) => {
  res.sendFile(path.join(__dirname, "client/build/", "index.html"));
});

app.listen(port, () => console.log(`Listening on port ${port}`));

抱歉发了这么长的帖子,但我对nginx一无所知,我想涵盖几乎所有我拥有的东西。

【问题讨论】:

    标签: node.js reactjs ssl nginx cloudflare


    【解决方案1】:

    也许您的后端服务器没有准备好处理 SSL 请求。你可以让你的 NGINX 为你处理这些,并在没有 SSL 的情况下与你的后端通信,这在以前是有效的。您可以通过将proxy_pass 指令改回http:// 地址来实现。

    server {
      # Other stuff ...
      location / {
         # Comunicate proxy with backend without encryption until you setup SSL on your application...
         proxy_pass http://IP:3030;
         # Other stuff...
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-25
      • 2020-09-26
      • 2015-02-17
      • 1970-01-01
      • 2016-05-31
      • 2019-12-28
      • 1970-01-01
      • 2017-02-07
      相关资源
      最近更新 更多