Nginx + Tomcat работает на одном сервере - PullRequest
0 голосов
/ 20 июня 2019

Я разрабатываю веб-приложение с использованием Tomcat. Я настроил фронтальный сервер NGINX для обслуживания статического содержимого и перенаправления остальной части работы на сервер Tomcat.

Я установил эту конфигурацию в NGINX:

proxy_cache_path  /var/www/mysite/assets levels=1:2 keys_zone=my_cache:10m inactive=60m;
proxy_cache_key   "$scheme$request_method$host$request_uri";

server {
        server_name             mysite.com www.mysite.com;
        listen                  443 ssl http2;

        ssl_certificate         /etc/ssl/mysite.crt;
        ssl_certificate_key     /etc/ssl/mysite.key;
        ssl_session_cache       shared:SSL:10m;
        ssl_session_timeout     10m;

        root                    /opt/tomcat/latest/webapps/mysite/;
        index                   index.jsp;

        location ~* \.(jpg|jpeg|png|gif|ico|css|js|xml|gz)$ {
                expires 12h;
        }

        location / {
                proxy_pass              http://127.0.0.1:8080/mysite/;
                proxy_redirect          off;
                proxy_set_header        Host $host;
                proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header        X-Real-IP $remote_addr;
                proxy_set_header        X-Forwarded-Proto $scheme;
                proxy_set_header        X-Server-Proto $server_protocol;

                proxy_cache             my_cache;
                add_header              X-Proxy-Cache $upstream_cache_status;
        }
}

Как видите, я установил перенаправление прокси и кеш прокси. Используя последнюю директиву (add_header X-Proxy-Cache $upstream_cache_status;), я мог видеть, загружаются ли ресурсы HIT или HIS e.

Проблемы, которые я обнаружил:

  1. Если я использую эту конфигурацию, я думаю, что не вижу заголовки HIT / MISS, Не знаю, хорошо ли работает прокси-кеш .
  2. Если я прокомментирую весь раздел location ~* \.(jpg|jpeg|png|gif|ico|css|js|xml|gz)$, я смогу увидеть заголовки HIT / MISS, поэтому Я думаю, что прокси-кеш работает , но я не знаю, позволяю ли Tomcat управлять статическим содержание, и это то, что я хотел избежать, используя этот раздел

Как настроить файл конфигурации на использование прокси-кэша и позволить NGINX управлять статическим контентом (jpg, css, js, ...)? Может быть, все в порядке, и у меня все хорошо ... Какое решение является лучшим?

Спасибо.

1 Ответ

1 голос
/ 20 июня 2019

Наличие add_header X-Proxy-Cache $upstream_cache_status; в конфигурации NGINX означает, что NGINX просматривает expires, установленный для этих ресурсов, поступающих из Tomcat, и кэширует их соответствующим образом.

Дополнительный блок location

location ~* \.(jpg|jpeg|png|gif|ico|css|js|xml|gz)$ {
                expires 12h;
}

в сочетании с

root                    /opt/tomcat/latest/webapps/mysite/;

будет обслуживать их с диска, а не с прокси, исключая необходимость попадания в кэш прокси.

...