如何在cPanel上连接node.js后端和react.js前端?

时间:2020-07-04 16:17:36

标签: node.js reactjs axios cpanel

我有一个用React构建的前端和一个用Node JS和Express构建的后端。我正在使用cPanel托管网站。

React版本的文件位于home / public_html目录中,后端文件位于home / server目录中。

-home
  --public_html
    ---index.html
    ---// *rest of the frontend files*
  --server
    ---server.js
    ---api
    --- // *rest of the backend files*

在public_html目录中,我添加了一个具有以下代码的.htaccess文件

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  RewriteRule ^server\.js$ - [L]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-l
  RewriteRule . server/server.js [L]
</IfModule>

根据我的理解,应该将server/server.js设置为切入点。

(此语法正确吗?)

在我的server.js文件中,设置以下内容:

 if (process.env.NODE_ENV === 'production') {
    app.use(express.static(path.join(__dirname, '../public_html')));    
}

应该可以从pubic_html文件夹中提供静态文件。

在加载网站时,我看到正在处理前端,但是对API响应的任何请求都带有400状态代码。

在我的axios配置中,我正在设置

const BASE_URL = process.env.NODE_ENV === "production" ? "/api/" : "//localhost:3030/api/";

这是我用来将网站上传到Heroku的方式。它以http://www.example.com/api/解析 问题是在cPanel上http://www.example.com/被设置为public_html目录。我需要使BASE_URL回到服务器目录的路径。

我的问题是: 我如何在axios上设置返回服务器目录? 要么 我应该将服务器目录放在public_html目录中吗?如果是这样,允许人们浏览我的服务器目录并访问敏感内容是否存在安全风险?

我将不胜感激!谢谢。

0 个答案:

没有答案