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

Pul*_*kit 15 css windows jboss tomcat nginx

最近我开始使用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
Run Code Online (Sandbox Code Playgroud)

我认为问题是因为绝对路径,所以我应该复制资源文件夹并将其放在NGINX的某个文件夹中并配置我的NGINX从其自己的目录中选择文件而不是去Tomcat/JBoss?我是新人,所以我不知道这样做可以任何人请帮助我.这是NGINX的我的conf文件(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/;
        }
Run Code Online (Sandbox Code Playgroud)

小智 32

您可以使用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/;
    }
}
Run Code Online (Sandbox Code Playgroud)


kyo*_*kyo 6

尝试

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/;
    }
}
Run Code Online (Sandbox Code Playgroud)

如何测试

在您的 CLI 中运行 ab -c 20 -n 1000 https://your-site/any-file

您会看到测试所用的时间急剧减少。