nginx 中的多个位置不起作用 - 错误 404
multiple location in nginx is not working - error 404
我正在尝试 运行 两个 nodejs 应用程序,一个在默认路径 (/) 上,另一个在 /api ,我尝试了多种方法,但多个位置无法使用 nginx ,只有根域 (/) 工作正常,我分配哪个应用程序并不重要(第二个或第一的)。如果我尝试访问 (/api) 它 return 404 未找到并且 (/) 路径有效美好的。
这是我的默认 nginx 文件
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;
server_name example.com;
location /api {
proxy_pass http://localhost:3000;
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;
try_files $uri $uri/ =404;
}
location / {
proxy_pass http://localhost:8081;
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;
try_files $uri $uri/ =404;
}
}
我做错了什么。任何帮助都会得到帮助。谢谢
经过大量谷歌搜索并尝试了很多方法后,我找到了解决方案,我没有使用 React 应用程序作为动态加载,而是生成了一个 React 构建并将该构建存储在特定位置,并在 main 上提供这些构建文件使用 nginx 的位置。
location / {
root /home/user/gui/build;
try_files $uri /index.html;
}
location /api/ {
proxy_pass http://localhost:3002/;
proxy_redirect off;
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;
}
location /static/ {
root /home/user/gui;
try_files
/gui/build$uri
=404;
}
所以这里 (/) 将尝试 root 文件夹中的文件 (/home/user/gui/build) 并且我们有 index.html 由 react build 生成,这个 index.html 将被提供.现在下一个问题是为反应生成的静态文件提供服务,所以我创建了一个单独的位置 (/static/) 与 / 路径相同的逻辑。
我正在尝试 运行 两个 nodejs 应用程序,一个在默认路径 (/) 上,另一个在 /api ,我尝试了多种方法,但多个位置无法使用 nginx ,只有根域 (/) 工作正常,我分配哪个应用程序并不重要(第二个或第一的)。如果我尝试访问 (/api) 它 return 404 未找到并且 (/) 路径有效美好的。 这是我的默认 nginx 文件
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;
server_name example.com;
location /api {
proxy_pass http://localhost:3000;
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;
try_files $uri $uri/ =404;
}
location / {
proxy_pass http://localhost:8081;
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;
try_files $uri $uri/ =404;
}
}
我做错了什么。任何帮助都会得到帮助。谢谢
经过大量谷歌搜索并尝试了很多方法后,我找到了解决方案,我没有使用 React 应用程序作为动态加载,而是生成了一个 React 构建并将该构建存储在特定位置,并在 main 上提供这些构建文件使用 nginx 的位置。
location / {
root /home/user/gui/build;
try_files $uri /index.html;
}
location /api/ {
proxy_pass http://localhost:3002/;
proxy_redirect off;
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;
}
location /static/ {
root /home/user/gui;
try_files
/gui/build$uri
=404;
}
所以这里 (/) 将尝试 root 文件夹中的文件 (/home/user/gui/build) 并且我们有 index.html 由 react build 生成,这个 index.html 将被提供.现在下一个问题是为反应生成的静态文件提供服务,所以我创建了一个单独的位置 (/static/) 与 / 路径相同的逻辑。