1

我想有一个 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 列表。

我究竟做错了什么?

4

1 回答 1

0

您必须更改 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">
于 2018-08-13T19:47:27.520 回答