nginx使用代理传递和具有错误页面的位置来提供位置

时间:2016-07-25 22:33:55

标签: javascript html css nginx

我有nginx下一个配置:

http {

...

server {
  listen 80;
  server_name localhost;

  # Only allow these request methods
  if ($request_method !~ ^(GET|HEAD|POST)$ ) {
     return 444;
  }

  location / {
    proxy_cache cache;
    proxy_cache_valid 10m;
    proxy_cache_valid 404 1m;
    proxy_pass http://localhost:8888/;
    proxy_redirect off;
    proxy_buffering off;
    proxy_read_timeout 150;
    proxy_connect_timeout 300;
    proxy_intercept_errors on;

    if (-f /usr/share/nginx/closed) {
        return 503;
    }

    ....

  }
...
}

现在我需要包含css和js的自定义错误页面,我可以这样做

  error_page  404  /404.html;
  location /404.html {
    root /usr/share/nginx/html;
  }

这是有效的,但我无法提供404.css和404.js作为示例,我只能看到404.html。

我发现这个案例是为错误页面提供css和js:

  error_page 500 502 503 @error_page;

  location @error_page {
    root /var/nginx/app/htdocs;
    internal;
  }

但出于某种原因,这对我不起作用。如何使用css和js服务自定义错误页面?

1 个答案:

答案 0 :(得分:0)

我认为托比是对的。您将要设置/ static / location(或类似)来提供静态文件,并且应该位于包含proxy_pass的根位置之外。然后你的错误页面应该引用静态资产的正确URL(即/static/404.css)。您的404.css和404.js将像任何其他资产一样被提供。

server {
    listen 80;

    ...

    location /static/ {
        alias /path/to/htdocs/static/;
        access_log off;
    }

    location / {

      ....
    }


}