大家好,我正尝试使用带有React Router的服务器渲染在AWS EC2示例上部署一个测试应用程序,根据this tutorial,服务器渲染组件使用nginx代理到localhost:PORT,如下所示
nginx配置:
server{ listen 80 ; listen [::]:80;
server_name myservername.com;
location / { proxy_pass http://localhost:PORT$request_uri;
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; }
}
PM2:
简单跑步
pm2 start /location --name AppName
我可以响应我的应用程序,但只能响应后端部分,如果我尝试访问前端,所有路径似乎都被重定向到React Router的404处理程序,但如果我使用命令启动应用程序
node server.js
这一切工作正常,但当然不是这样做的,因为一旦命令行被杀死,那么进程也被杀死。webpack构建生产代码后,它会在公共文件夹中创建一个build.js,并创建一个server.js,据我所知,server.js处理相应的显示或响应内容。我通过控制台记录路径,认为代理之后的路径可能不同,但它没有返回我请求的路径,还发现pm2可能使用
pm2 serve /path/bundle.js port
所以我用了和后端相同的端口,我知道这不起作用,但是我想试一下。API路径,但由于其服务器呈现不起作用,加上当使用pm2但使用相同的nginx配置文件但从命令行运行服务器时,前端和所有css或html调用返回404的事实工程告诉我,nginx配置文件是好的,但也许pm2是可能的罪魁祸首,如果有人能帮我找出我错过了什么,我会很感激。
1条答案
按热度按时间f87krz0w1#
大家好,我终于弄明白了,所以pm2无法命中一些路由,因为捆绑包前端位于不同的文件夹中,它也是静态的,所以修复是调整您的nginx配置如下所示
它现在服务于“无法访问”的文件