如何让 NGINX 提供静态内容,如 .js、.css、.html?
Posted
技术标签:
【中文标题】如何让 NGINX 提供静态内容,如 .js、.css、.html?【英文标题】:how to make NGINX serve static content like .js, .css, .html? 【发布时间】:2014-07-09 17:02:54 【问题描述】:最近我开始使用 nginx,我发现我们可以将它用于反向代理,从自身提供静态内容,从而减少加载时间。我的本地机器上有一个 Tomcat/JBoss 服务器,我想将 NGINX 放在它前面,这样静态内容将从 NGINX 提供,而全部由 Tomcat/JBoss 提供。我的 Tomcat/JBoss 应用程序在 http://localhost:8081/Test
上运行,我的 NGINX 配置工作正常,但无法加载 css/js/jpg
文件。这是我的战争结构,静态内容在哪里
Test.war
TEST
|
|--->Resources
| |------->CSS
| | |----> style.css
| |
| |-------->Images
| |----> a.jpg
| |----> b.jpg
|
|--->WEB-INF
| |----->Web.xml
| |----->spring-servlet.xml
|
|--->JSP
|---->login.jsp
我认为问题是因为绝对路径,所以我应该复制资源文件夹并将其放在 NGINX 的某个文件夹中,并将我的 NGINX 配置为从自己的目录中选择文件而不是去 Tomcat/JBoss 吗?我是新手,所以我不知道这样做有没有人可以帮助我。这是我的 NGINX(windows) 配置文件
server
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location /
proxy_pass http://127.0.0.1:8081/Test/;
【问题讨论】:
添加一个更具体的位置/Resources/
指向绝对路径应该可以工作。 (你需要将它指向爆炸的战争文件夹)
所以我应该在我的 NGINX 服务器目录中放置一个 Resources 文件夹?
实际上我的想法是将我所有的静态内容放在 NGINX 服务器目录中,它们应该从这里提供,而不是从 JBoss/Tomcat 加载它们,但我不知道如何配置 NGINX 来加载所有这些静态内容来自它自己的服务器目录
这也应该可以。但是您需要阻止 proxy_pass 生效。定义更具体的位置。
@Thilo:您是否有任何示例 conf 文件,您这样做是为了在 NGINX 目录中查找静态内容并将所有内容都放在 JBoss 目录中???
【参考方案1】:
这对我有用:
location /static
alias /usr/src/app/project/static;
【讨论】:
【参考方案2】:试试
server
listen 80;
server_name localhost;
location ~* \.(css|js|gif|jpe?g|png)$
expires 168h;
location /
proxy_pass http://127.0.0.1:8081/Test/;
如何测试
在您的 CLI 中运行 ab -c 20 -n 1000 https://your-site/any-file
您会看到测试所用时间急剧减少。
【讨论】:
【参考方案3】:您可以使用正则表达式添加位置:
server
listen 80;
server_name localhost;
location ~* \.(js|jpg|png|css)$
root path/to/tomcat/document/root/Test/;
expires 30d;
location /
proxy_pass http://127.0.0.1:8081/Test/;
【讨论】:
设置后如何测试? @ihue sudo service nginx restart @ihue 改用sudo nginx -t
进行测试
我不是要测试nginx语法。我的意思是测试缓存速度。如何检查您的缓存是否有所不同?
我还想要一种方法来测试它是否有效。有没有办法跟踪从哪个服务器提供静态文件?以上是关于如何让 NGINX 提供静态内容,如 .js、.css、.html?的主要内容,如果未能解决你的问题,请参考以下文章
NGINX - 如何提供包含 css、pngs 和 js 作为相对路径的静态 html
使用 Traefik 时如何使用 Nginx 和 Django Gunicorn 提供静态内容