当前位置: 首页 > 知识库问答 >
问题:

nginx从root提供静态文件,并从alias上传文件

柯昆杰
2023-03-14

我将nginx作为apache前面的反向代理服务器运行。我需要在后端从前端访问上传的文件,所以方法是在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个答案

宰父君昊
2023-03-14

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

尝试:

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

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

 类似资料:
  • 我一直在处理将一个站点从Apache迁移到Nginx的过程,我快要失去理智了。虚拟主机不想提供静态资源(css、js等),我似乎不知道为什么。服务器块看起来像这样: 我错过了什么?我知道这是因为我对Nginx缺乏经验,但任何建议都将不胜感激。 谢谢 更新 这似乎与我以前遇到麻烦的化名有关。如果我将我的文档根指向别名位置(),并尝试呈现没有别名的静态内容,它会呈现良好的效果。一旦我在网址中输入别名.

  • 问题内容: 这是我的项目文件夹 这是我index.js中的静态文件配置 这是我的index.html 这是我的nginx配置 但是我在所有脚本上都得到404。另一个奇怪的是,这些文件上的mime-type设置为 我在这里做错了什么? 我有一个项目,该项目具有相同的项目结构,并且具有相同的配置,但它适用于此项目,在这种情况下不起作用。 问题答案: 您无需配置Nginx 和 Express即可提供静态

  • 问题内容: 我正在为Django使用apache + mod_wsgi。 并且所有css / js / images都通过提供。 出于某种奇怪的原因,当其他人/朋友/同事尝试访问该网站时,jquery / css不会为他们加载,因此页面看上去很混乱。 我的html文件使用这样的代码- 我的nginx配置是这样的 有一个目录,其中有相应的&目录。 奇怪的是,当我访问它们时页面显示正常。 我已经清除了

  • 问题内容: 我有一个关于在Go中提供文件的快速问题。有一个省时的FileServer处理程序,但是对于我的用例来说,我的应用程序只有2或3个文件(js和css),我不想使部署复杂化而不得不考虑这些问题。 您是否认为有一种简单的方法可以将这两个文件构建为二进制文件并从那里提供文件。例如,base64将文件的数据编码为常量,然后从常量中存储文件。这将以最简单的形式工作,但是我不想自己做文件服务器所做的

  • 问题内容: 我有一个具有以下结构的Web应用程序: 我已经设法使用nginx和wsgi运行Web应用程序,但是问题是没有提供静态文件,我的意思是,当我转到它们的URL时,服务器找不到它们。它给我404。 这是我的nginx配置文件部分: 缺少什么吗? 问题答案: 将此添加到你的nginx配置 用你应用的绝对路径替换时,你应该注意它不包含静态目录,并且其中的所有内容都将存储在中。

  • 我在Tomcat前面有Nginx,但proxy_pass静态文件不提供。这是我的配置: 如果我去https://example.com我得到的Tomcat应用程序没有CSS,没有图片。 从错误中恢复。日志