root

时间:2016-03-15 13:42:03

标签: nginx

是否可以将nginx配置设置为如下所示:

我的网站根目录将位于路径中:/ var / www / html

是否可以在其他路径中放置例如401,404等错误页面,例如:/ some / other / path

我设法让这个工作(在网站根目录之外加载错误页面)使用这个:

error_page 404 /custom_404.html;
location = /custom_404.html {
   root /path/to/my/root/for/error/pages
   internal;
}

现在这是问题...我的404页面可能包含一些图像和css文件,当它显示我的404页面时,css和图像根本没有加载(如果我把css和图像放入错误页面/无功/网络/ HTML)。

我想将错误页面中的错误页面的css和图像保存在错误页面的相同文件夹中...任何人都可以指出我应该如何配置它,是否可能或者指向我某处,因为我正在寻找几天关于它。

非常感谢。

3 个答案:

答案 0 :(得分:1)

假设您的custom_404.html如下所示:

<html>
<head><title>Oops!</title></head>
<body>
  <h1>404</h1>
  <img src="oops.gif" />
</body>
</html>

将其更改为:

<html>
<head><title>Oops!</title></head>
<body>
  <h1>404</h1>
  <img src="/error/oops.gif" />
</body>
</html>

然后在.conf文件中:

error_page 404 /error/custom_404.html;
location /error/ {
    root /path/to/error/files;
}

答案 1 :(得分:0)

您可以拥有这样的后备位置:

location / {
    root /normal/path/to/html;
    try_files $uri @fallback;
}

location @fallback {
    root /path/to/error/files;
}

答案 2 :(得分:0)

您的问题是internal规则,该规则限制仅从内部请求访问的位置。为了保留internal Nginx规则,您可以执行以下操作:

  • 使用inline CSS
  • 将图片转换为Base64

执行此操作后,您可以将生成的Base64字符串嵌入到background-image CSS规则中,如下所示:

background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEADI.....==)

您也可以将字符串与<img>标记一起使用,只需将其传递给src属性,如下所示:

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEADI.....==" />

否则,如果您仍想使用外部内容,则必须从专用于Nginx配置中的错误页面的位置删除internal规则。