web-dev-qa-db-ja.com

NGINXが.js、.css、.htmlなどの静的コンテンツを提供するようにする方法は?

最近、NGINXの使用を開始しました。NGINXをリバースプロキシに使用し、ロード時間を短縮できる静的コンテンツをそれ自体から提供できることがわかりました。ローカルマシンにTomcat/JBossサーバーがあり、静的コンテンツがNGINXから提供され、Tomcat/JBossによってすべて静止されるように、NGINXをその前に配置したいです。 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のいくつかのフォルダに入れ、Tomcat/JBossに行くのではなく独自のディレクトリからファイルを選択するようにNGINXを設定する必要がありますか?私は新しいので、私はこれを行うという考えを持っていません。誰もがこれで私を助けることができます。これは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/;
        }
15
Pulkit

Regexpでlocationを追加できます。

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

試用

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
kyo