2

我正在尝试,没有运气(得到 404s),让 nginx 为某个子目录下的请求提供静态文件,而所有其他请求都是反向代理的。例如,我希望对http://example.com/project/static/index.htmlhttp://example.com/project/static/subdir/file2.html的请求映射到 /var/www/example .com/htdocs/index.html 和 /var/www/example.com/htdocs/subdir/file2.html 分别。

所有其他请求都应该被反向代理。例如,http ://example.com/project/thisWillBeProxied.html和http://example.com/project/subdir/soWillThis.html

这是我的活动 nginx 配置文件

server {
    listen   8080;
    server_name  example.com;
    access_log  /var/www/example.com/log/nginx.access.log;
    error_log  /var/www/example.com/log/nginx_error.log debug;

    location / {
            proxy_pass         http://reverse-proxy-host/;
    }

    location ^~ /project/static/ {
            alias   /var/www/example.com/htdocs;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
            root   /var/www/nginx-default;
    }
}
4

2 回答 2

1

错误日志有助于解释发生了什么。

你的配置:

location ^~ /project/static/ {
    alias   /var/www/example.com/htdocs;
}

它完全符合您所写的。/project/static/它在您的 URI 中替换为文件路径/var/www/example.com/htdocs。因此,如果请求看起来像,http://example.com/project/static/index.html那么 nginx 将尝试打开/var/www/example.com/htdocsindex.html. 我假设您不想发球/var/www/example.com/htdocsindex.html,但您想发球,/var/www/example.com/htdocs/index.html那么您应该写:

location ^~ /project/static/ {
    alias   /var/www/example.com/htdocs/;
}

文档

于 2012-09-15T13:55:33.510 回答
0

我将尝试使用它: http ://wiki.nginx.org/HttpCoreModule#error_page

阅读“如果在重定向期间不需要更改 URI,则可以将错误页面的处理重定向到指定位置”

我不必以这种方式使用静态目录。:)

于 2012-12-11T15:50:55.777 回答