url中的子路径返回使用react router的nginx和express server的内部服务器错误

url中的子路径返回使用react router的nginx和express server的内部服务器错误,express,nginx,Express,Nginx,因此,基本上我有一个运行在端口4000上的express服务器,Nginx使用代理传递重定向到该端口。当我在浏览器()中访问域的根目录时,一切正常。但是当我刷新导航到的任何子路由或尝试直接访问它们()时,我会得到一个内部服务器错误 在我的express服务器上运行的react应用程序在本地运行时与react router dom配合使用绝对正常,但我的Nginx配置有问题 我一整天都在努力解决这个问题,非常感谢您的帮助 这是Nginx中我的站点可用/默认文件 server { r

因此,基本上我有一个运行在端口4000上的express服务器,Nginx使用代理传递重定向到该端口。当我在浏览器()中访问域的根目录时,一切正常。但是当我刷新导航到的任何子路由或尝试直接访问它们()时,我会得到一个内部服务器错误

在我的express服务器上运行的react应用程序在本地运行时与react router dom配合使用绝对正常,但我的Nginx配置有问题

我一整天都在努力解决这个问题,非常感谢您的帮助

这是Nginx中我的站点可用/默认文件

server {
        root /var/www/index.html;
        # Add index.php to the list if you are using PHP
        index index.html index.htm index.nginx-debian.html;

        server_name buildingblockscms.tech www.buildingblockscms.tech;

        location / {
                proxy_pass http://localhost:4000/; #whatever port your app runs$
                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;
                proxy_set_header   X-Forwarded-Host $server_name;
                proxy_redirect     off;
    }
这是我在端口4000上运行的服务器文件:

const express = require('express');
const mongoose = require('mongoose');
const graphqlHTTP = require('express-graphql');
const auth = require('./middleware/auth');

const app = express();
const fileUpload = require('express-fileupload');

app.use(express.json());

// enable files upload
// app.use(
//   fileUpload({
//     createParentPath: true
//   })
// );

// DB Config
const db = process.env.mongoURI || require('./config/keys').mongoURI;

// Connect to Mongo
mongoose
  .connect(db, { useUnifiedTopology: true, useNewUrlParser: true })
  .then(() => console.log('MongoDB connected...'))
  .catch((err) => console.log(err));

// Use Routes
app.use('/api/content-types', require('./routes/api/content-types'));
app.use('/api/sites', require('./routes/api/sites'));
app.use('/api/users', require('./routes/api/users'));
app.use('/api/pages', require('./routes/api/pages'));
app.use('/api/auth', require('./routes/api/auth'));

// GraphQL Route
app.use(
  '/graphiql',
  auth,
  graphqlHTTP({
    schema: require('./routes/client-graphql/schema'),
    graphiql: true,
  })
);

// Serve static assets if in production
if (process.env.NODE_ENV === 'production') {
  // Set static folder
  app.use(express.static('client/build'));

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

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

嘿,伙计,你能用react路由器修复配置吗?我遇到了同样的问题react路由器不能在本地正常工作的服务器上工作。嘿,伙计,你能用react路由器修复配置吗?我遇到了同样的问题react路由器不能在本地正常工作的服务器上工作。