麻烦 运行 nginx 上同一域中的两个 Web 应用程序

Trouble running two web applications on the same domain on nginx

我想要一个 nginx 服务器在同一域中托管 Web 应用程序,但路径不同。 例如, http://example.org/booksapp/signin.html 应该指向第一个应用程序, http://example.org/shoesapp/signin.html 应该指向第二个应用程序

在我的主机中,我有两个文件夹,每个应用一个: /var/webfolder/booksapp 和 /var/webfolder/shoesapp

我的nginx配置如下

server {
    server_name example.org;

    index index.html index.htm;

    location /foodapp {
        root /var/webfolder;
        try_files $uri $uri/ =404;
    }
    location /shoesapp {
        root /var/webfolder;
        try_files $uri $uri/ =404;
    }

    listen [::]:80;
    listen 80;
}

此配置无效。我的浏览器在尝试加载任一 Web 应用程序时只显示空白页面。 同时,nginx 日志文件显示应用程序尝试加载的每个资源的 404 列表。

我做错了什么?

您必须更改 html 文件才能使用正确的路径。

您的 "booksapp" 位于 example.org/booksap/,html 页面必须使用同一路径加载任何静态资源。

这是示例 html 文件的头部部分。如果您将其部署到您的任何站点,它将无法工作,除非您指定正确的路径,否则 nginx 无法找到 "normalize.css" 和 "styles.css"。现在 nginx 充当两个应用程序之间的路由器,你不能只请求一个文件,你必须指定哪个应用程序。

<!DOCTYPE html>
<html>
<head>
  <meta content="text/html; charset=utf-8" http-equiv="content-type">
  <title>sakura demo</title>
  <link href="normalize.css" rel="stylesheet" type="text/css">
  <link href="styles.css" rel="stylesheet" type="text/css" media="all">
</head>

应该是:

  <link href="booksap/normalize.css" rel="stylesheet" type="text/css">
  <link href="booksap/styles.css" rel="stylesheet" type="text/css" media="all">