Nginx的休息的NodeJS API端点返回404
我想设置为本地网络中使用本地服务器。该阵营的应用工作正常,可从网络上的另一台计算机的访问。问题是,我创建的API端点是返回404错误(但不Nginx的404)。它被视为一个普通Reactjs应用内部页面。
这是我的Nginx的conf文件:
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/build;
index index.html index.htm index.nginx-debian.html;
server_name _;
# This is the react app
location / {
try_files $uri /index.html;
}
# This is the restful api
location /api {
proxy_redirect off;
default_type application/json;
proxy_pass_header Server;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Scheme $scheme;
proxy_set_header Content-Type: application/json;
proxy_set_header Host $host;
proxy_set_header X-NginX-Proxy true;
proxy_connect_timeout 5;
proxy_read_timeout 240;
proxy_intercept_errors on;
proxy_pass http://localhost:5000;
}
}
这里是我的应用程序做出反应`的package.json:
{
"name": "React APP",
"version": "0.1.0",
"private": true,
"dependencies": {
...
},
"scripts": {
...
},
"devDependencies": {
...
},
"homepage": "."
}
从我的本地机器,我能够参观http://localhost/
,它显示了我ReactApp就好了,但是,http://localhost/api/v1/
及其所有端点没有正确映射。但是,如果我访问http://localhost:5000
,我能够进入我的API就好了。
谁能告诉我,我做错了什么?
回答如下:这些应用程序在不同的端口上运行,80反应服务器的NodeJS应用程序和5000。有下面的conf.d文件夹即react.conf下的两个应用的两个单独的构
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/build;
index index.html index.htm index.nginx-debian.html;
server_name _;
# This is the react app
location / {
try_files $uri /index.html;
}
}
并为端点的NodeJS你可以即nodejs.conf
server {
listen 80 default_server;
server_name nodeapi;
# Redirect all HTTP to HTTPS
location / {
proxy_redirect off;
default_type application/json;
proxy_pass_header Server;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_a dd_x_forwarded_for;
proxy_set_header X-Scheme $scheme;
proxy_set_header Content-Type: application/json;
proxy_set_header Host $host;
proxy_set_header X-NginX-Proxy true;
proxy_connect_timeout 5;
proxy_read_timeout 240;
proxy_intercept_errors on;
proxy_pass "http://localhost:5000";
}
}
Nginx的休息的NodeJS API端点返回404
我想设置为本地网络中使用本地服务器。该阵营的应用工作正常,可从网络上的另一台计算机的访问。问题是,我创建的API端点是返回404错误(但不Nginx的404)。它被视为一个普通Reactjs应用内部页面。
这是我的Nginx的conf文件:
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/build;
index index.html index.htm index.nginx-debian.html;
server_name _;
# This is the react app
location / {
try_files $uri /index.html;
}
# This is the restful api
location /api {
proxy_redirect off;
default_type application/json;
proxy_pass_header Server;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Scheme $scheme;
proxy_set_header Content-Type: application/json;
proxy_set_header Host $host;
proxy_set_header X-NginX-Proxy true;
proxy_connect_timeout 5;
proxy_read_timeout 240;
proxy_intercept_errors on;
proxy_pass http://localhost:5000;
}
}
这里是我的应用程序做出反应`的package.json:
{
"name": "React APP",
"version": "0.1.0",
"private": true,
"dependencies": {
...
},
"scripts": {
...
},
"devDependencies": {
...
},
"homepage": "."
}
从我的本地机器,我能够参观http://localhost/
,它显示了我ReactApp就好了,但是,http://localhost/api/v1/
及其所有端点没有正确映射。但是,如果我访问http://localhost:5000
,我能够进入我的API就好了。
谁能告诉我,我做错了什么?
回答如下:这些应用程序在不同的端口上运行,80反应服务器的NodeJS应用程序和5000。有下面的conf.d文件夹即react.conf下的两个应用的两个单独的构
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/build;
index index.html index.htm index.nginx-debian.html;
server_name _;
# This is the react app
location / {
try_files $uri /index.html;
}
}
并为端点的NodeJS你可以即nodejs.conf
server {
listen 80 default_server;
server_name nodeapi;
# Redirect all HTTP to HTTPS
location / {
proxy_redirect off;
default_type application/json;
proxy_pass_header Server;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_a dd_x_forwarded_for;
proxy_set_header X-Scheme $scheme;
proxy_set_header Content-Type: application/json;
proxy_set_header Host $host;
proxy_set_header X-NginX-Proxy true;
proxy_connect_timeout 5;
proxy_read_timeout 240;
proxy_intercept_errors on;
proxy_pass "http://localhost:5000";
}
}