0

我实际上有这个工作,但我想知道我是否以最有效的方式这样做,或者我是否可以对我的 conf 文件进行任何改进。这是我正在尝试做的事情:

  1. 如果从根请求任何文件,我们应该始终提供“index.html”。不应访问其他文件,并且请求其他任何文件都应视为您请求“index.html”。目前我正在使用重写,但重定向也可以,而且可能更可取。
  2. 可以请求“/css”或“/js”下的任何文件,并且从那些不存在的目录中请求文件应返回 404。

这是我当前的工作 conf 文件:

server {
  listen 80;
  server_name www.example.com;
  client_max_body_size 50M;

  root /var/www/mysite;

  location = /index.html {
  }

  # map everything in base dir to one file
  location ~ ^/[^/]*$ {
    rewrite ^/[^/]*$ /index.html;
  }

  location ~ ^/css/ {
  }

  location ~ ^/js/ {
  }
}

更新

我的最终 conf 文件在负载测试下速度更快,并且比原始文件更简单,如下所示:

server {
  listen 80;
  server_name example.com;

  root /var/www/register;

  location = /index.html {
  }

  # Default location, request will fallback here if none other
  # location block matches
  location / {
    rewrite ^.*$ /index.html redirect; # 'root' location '/'
  }

  location /css/ {
  }

  location /js/ {
  }

}
4

1 回答 1

1

我不确定我是否正确,但检查这个答案,你总是想要服务器index.html,所以它应该是默认位置location /

server {
    server_name example.com www.example.com;
    client_max_body_size 50M;
    root /var/www/mysite;
    index index.html;
    location / {
        try_files index.html =404;
    }
    location /(css|js) {
        try_files $uri =404;
    }
}
于 2013-10-21T08:41:14.630 回答