nginx从root用户提供静态文件,从别名提供上传文件

时间:2017-01-08 21:23:40

标签: nginx

我在apache前面运行nginx作为反向代理服务器。 我需要从后端的前端访问上传的文件,所以要采用的方法是在nginx站点配置中使用别名,但后端的静态文件应该由nginx直接处理。我是nginx的新手,所以这里是处理静态文件的部分配置。我还指定了别名(/ images)但它不起作用,因为它被第二个条件覆盖。 如何组合这两个条件,以便nginx处理来自root(后端应用程序)的静态文件和从前端应用程序上传的文件。 在apache配置中,我为这个问题包含了一个别名,它可以工作但前面没有nginx。

这是我的部分nginx配置:

  server {
       listen 80;

       root /var/www/website/backend/www;

       # Add index.php to the list if you are using PHP
       index index.html index.php index.htm;

       server_name admin.website.com www.admin.website.com;

       location / {
                proxy_pass http://localhost:8080;
                include /etc/nginx/proxy_params;
       }
#The alias to handle uploaded files(.jpeg, .pdf) from frontend
      location  /images {
               alias /var/www/website/frontend/www/images;
      }
#let nginx handle static files from root
       location ~* \.(js|css|jpg|jpeg|gif|png|svg|ico|pdf|html|htm)$ {
               expires      30d;
       }
.
.
.
}

1 个答案:

答案 0 :(得分:1)

正则表达式location块优先于前缀location块(除非使用^~修饰符)。有关详细信息,请参阅this document

尝试:

location ^~ /images {
    root /var/www/website/frontend/www;
}

请注意,在这种情况下首选root指令(有关详细信息,请参阅this document