【问题标题】:nginx: serve static content with alias urlnginx:使用别名 url 提供静态内容
【发布时间】:2015-12-14 09:35:31
【问题描述】:

我正在使用 django 和 rest-framework 编写一个 web 服务,我使用 nginx 作为我的 web 服务器。

客户端将使用标准 REST 方法使用 API。其中一个模块允许用户上传照片,服务将名称更改为随机字符串并将其保存在:/home/myProject/files/user-content/,例如:
/home/myProject/files/user-content/bb7dfb34336d4b638e50040cf91b8d9d.png

在 API 级别,一切正常。但我希望用户能够获取他们上传的文件:/image/:filename,例如:
http://mydomain/images/bb7dfb34336d4b638e50040cf91b8d9d.png

为了实现这一点,我的 nginx 配置如下:

server {
    listen 80;
    error_page   404        /index.html;

    root /home/webworker/landingpage/Page;
    index index.html index.htm;

    server_name localhost;

    location / {
                 proxy_pass http://0.0.0.0:8001;
                 proxy_set_header X-Forwarded-Host $server_name;
                 proxy_set_header X-Real-IP $remote_addr;
                 add_header P3P 'CP="ALL DSP COR PSAa PSDa OUR NOR ONL UNI COM NAV"';
    }

     location ~ ^/images/(.*)$ {
             alias /home/myProject/files/user-content/$1;
             access_log on;
             index index.html;
             autoindex off;
             gzip_static on;
             # expires max;
             sendfile off;
             add_header Cache-Control no-cache;
     }

}

nginx 服务启动时没有错误,但输入我认为应该可以工作的 URL 会返回 404 not found。顺便说一句,文件对所有用户都有读取权限。

【问题讨论】:

  • 你看过 nginx 日志吗?他们可能会解释什么是不工作的。
  • @Alasdair 是的,我有,没有任何帮助...

标签: django web-services nginx static http-status-code-404


【解决方案1】:

替换这一行

location ~ ^/images/(.*)$ {

location /images/ {

这应该能满足你的需要。

【讨论】:

  • 你能检查一下 nginx 访问和错误日​​志吗?你能确定图像在那里吗? @RezaShayestehpour
  • 正如我所说,图像位于我指向的文件夹中并且具有适当的权限。关于日志:与获取图像相关的是:MYIPADDRESS - - [17/Sep/2015:08:11:29 -0400] "GET /images/bb7dfb34336d4b638e50040cf91b8d9d.png HTTP/1.1" 404 151 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/600.8.9 (KHTML, like Gecko) Version/8.0.8 Safari/600.8.9" 并且没有错误,只是一些关于将 localhost 更改为 0.0.0.0:80 的警告
  • 您是否也可以尝试将别名更改为别名 /home/myProject/files/user-content/ ; ?对于测试,只需评论每隔一行。我觉得您的寻址系统可能有问题...@RezaShayestehpour
  • 好吧,问题不在于这个配置文件,它在其他地方。 @RezaShayestehpour
猜你喜欢
  • 1970-01-01
  • 2014-07-30
  • 2011-03-24
  • 1970-01-01
  • 1970-01-01
  • 2020-09-20
  • 1970-01-01
  • 2011-09-17
  • 1970-01-01
相关资源
最近更新 更多