如何让NGINX提供静态内容,如.js,.css,.html?

时间:2014-05-21 07:25:40

标签: css windows tomcat nginx jboss

最近我开始使用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)的conf文件

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/;
        }

3 个答案:

答案 0 :(得分:27)

您可以使用regexp:

添加位置
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/;
    }
}

答案 1 :(得分:3)

尝试

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

您将看到测试时间大幅减少。

答案 2 :(得分:0)

这对我有用:

location /static {
     alias /usr/src/app/project/static;
 }