Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何从配置了ssl的nginx提供的React应用程序向nodejs后端发送请求_Node.js_Reactjs_Nginx_Ssl - Fatal编程技术网

Node.js 如何从配置了ssl的nginx提供的React应用程序向nodejs后端发送请求

Node.js 如何从配置了ssl的nginx提供的React应用程序向nodejs后端发送请求,node.js,reactjs,nginx,ssl,Node.js,Reactjs,Nginx,Ssl,我已经使用CreateReact应用程序工具为reactjs应用程序生成了静态文件。然后,我在docker容器上启动了一个nginx服务器,为使用reactjs构建的前端提供服务 服务器正在与不同容器中的节点js交互。在我将ssl证书集成到Nginx之前,该应用程序运行良好 我开始阻止跨源请求时出错:同源策略不允许读取远程资源https://ip_address:8000/api_endpoint. 两个容器托管在同一台计算机上。 以下是Nginx的配置文件: server {

我已经使用CreateReact应用程序工具为reactjs应用程序生成了静态文件。然后,我在docker容器上启动了一个nginx服务器,为使用reactjs构建的前端提供服务

服务器正在与不同容器中的节点js交互。在我将ssl证书集成到Nginx之前,该应用程序运行良好

我开始阻止跨源请求时出错:同源策略不允许读取远程资源https://ip_address:8000/api_endpoint. 两个容器托管在同一台计算机上。

以下是Nginx的配置文件:

server {
        #listen [::]:80;
        server_name domain_name.com www.domain_name.com;
        root /var/www/react_app/html;
        index index.html;

        #server_name affiliates-pal.com;
        access_log /var/log/nginx/react-app.access.log;
        error_log /var/log/nginx/react-app.error.log;
       location / {
               try_files $uri /index.html;
        }

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/domain_name.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/domain_name.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.domain_name.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot
    if ($host = domain_name.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot

        listen 80;
        server_name domain_name.com www.domain_name.com;
    return 404; # managed by Certbot

}
我应该在以下节点后端的启动脚本中为CORS定义添加任何内容吗

const express = require("express");
const bodyparser = require("body-parser");

var app = express();
var cron = require("node-cron");
var sleep = require("system-sleep");

const usersRouter = require("./api-routes");


if(process.env.IP_ADDRESS)
{
    IP_ADDRESS = "http://"+process.env.IP_ADDRESS

}
else
{
    IP_ADDRESS= "http://localhost:3000"
} 
console.log("IP ADDRESS FROM GLOBAL VAR")
console.log(process.env.IP_ADDRESS)
console.log(IP_ADDRESS)

app.use(
  bodyparser.urlencoded({
    extended: true,
  })
);
app.use(bodyparser.json());

var cors = require("cors");
app.use(
  cors({
    origin: [IP_ADDRESS],
    credentials: true,
  })
);

//"http://localhost:3000"
app.use(function (req, res, next) {
  res.header("Access-Control-Allow-Origin", IP_ADDRESS);
  res.header("Access-Control-Allow-Headers", true);
  res.header("Access-Control-Allow-Credentials", true);
  res.header(
    "Access-Control-Allow-Methods",
    "GET, POST, OPTIONS, PUT, PATCH, DELETE"
  );
  next();
});

app.use("/", usersRouter);

cron.schedule("40 11 10 * * *", () => {
  console.log("before sleep");
  sleep(20000);
  console.log("after sleep");
});

const port = process.env.PORT || 8000;
app.listen(port, () => console.log(`Listening on port ${port}..`));

我是否应该按照中的建议为nginx添加代理配置?

我们有相同的设置,CORS没有问题。 Nginx配置困扰着我。你能试试这个吗

server {

        root /path/to/your/static/files;
        index index.html index.htm index.nginx-debian.html;

        server_name subdomain.domain.com(or domain.com); # CHANGE THE NAME UNDER REDIRECT BELOW AS WELL
        location / {

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

    listen 443 ssl;
    ssl_certificate /path/to/your/cert/fullchain.pem;
    ssl_certificate_key /path/to/your/key/privkey.pem;
}
server {
    if ($host = subdomain.domain.com(or domain.com)) {
        return 301 https://$host$request_uri;
    }



        server_name subdomain.domain.com(or domain.com);
    listen 80;
    return 404;
}

两个容器是否在同一网络(同一docker网络)中运行?它们是否在合成文件中?是的,它们位于同一网络上。我没有使用docker compose。我目前有两个不同的docker文件。我不确定这两个容器是否在同一docker网络中运行。试着创建一个网络,在同一个网络中运行两个容器,并添加CORS中间件来表示每个源代码都通过了。我不认为这个问题与docker有关。在将ssl添加到nginx之前,两个容器之间可以进行通信。现在我得到了xhr.js:177混合内容:位于“”的页面是通过HTTPS加载的,但请求了一个不安全的XMLHttpRequest端点“”。此请求已被阻止;内容必须在google chrome中通过HTTPS提供,并且:阻止加载混合活动内容”“在Firefox中。您有节点js服务器的ssl证书吗?好的,只是确认您是在尝试提供静态文件,还是要使用反向代理来提供您在nodeJS中编写的api?@chiplusplus在我提供的文件中,我正在向nodeJS api发送请求。