如何在Nginx,Express和NodeJS中修复“无法发布/index.html”

时间:2019-05-06 10:48:59

标签: javascript node.js express nginx react-router

我正在生产服务器上设置我的MERN项目,同时 确保您可以手动输入URL(例如myproject.com/dashboard),我在Nginx配置文件server的{​​{1}}部分中添加了以下行,以允许此操作(如react-路由器培训page)。现在,当尝试登录try_files $uri /index.html;时,已引起以下响应。

如果我删除该行,则对api工作的所有调用(我可以再次登录),但无法手动输入url。

我尝试将Cannot POST /index.html行移到try_files部分的顶部,以防服务器部分对此敏感。

server
server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name myproject.com;
    root /home/forge/myproject.com/client/build;
    ...
    location / {
        try_files $uri /index.html;
        proxy_pass http://127.0.0.1:8080;
    }
    ...
}

我希望能够登录(调用我的api)并手动输入URL到我的项目。

1 个答案:

答案 0 :(得分:1)

我认为您的配置无效。在配置中,如果所请求的文件不存在,则无论如何都将发送文件index.html。永远不会调用代理。

由于您的服务器具有/api前缀,因此请在nginx服务器上进行如下配置。因此,以/api开头的请求将作为后端服务器的代理。

server {
  listen 443 ssl http2;
  listen [::]:443 ssl http2;
  server_name myproject.com;
  root /home/forge/myproject.com/client/build;

  location /api/ {
    proxy_pass http://127.0.0.1:8080;
  }

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

}