Contêiner Nginx como cache de proxy para o contêiner do Tomcat

1

Estou tentando usar o nginx como cache proxy para o tomcat, usando dois contêineres separados. Eu criei um contêiner nginx da imagem nginx oficial; o mesmo para o tomcat, escutando na porta 8080.

Agora, como devo configurar o nginx como cache de proxy para o conteúdo do tomcat?

O conteúdo no servidor web tomcat está no caminho: localhost: 8080 / shaka-player-master / demo /

Este é o nginx.conf em / etc / nginx:

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {

    proxy_cache_path /tmp/nginx levels=1:2 keys_zone=my_zone:10m inactive=60m;
    proxy_cache_key "$scheme$request_method$host$request_uri";

    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
}

Eu tenho que dizer que existem, a partir do nginx docker imagem oficial, pastas / etc / nginx / sites-available nem / etc / nginx / site-enabled.

Eu quero dizer que no caminho / usr / share / nginx / html / do container nginx existe apenas um index.html criado automaticamente a partir da imagem nginx. O outro arquivo de configuração exclusivo está em /etc/nginx/conf.d/default.conf ...:

server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;
    #access_log  /var/log/nginx/log/host.access.log  main;

    location / {
         proxy_cache my_zone;
         add_header X-Proxy-Cache $upstream_cache_status;

         include proxy_params;
         proxy_pass http://localhost:8080/shaka-player-master/demo;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    #location ~ \.php$ {
    #    root           html;
    #    fastcgi_pass   127.0.0.1:9000;
    #    fastcgi_index  index.php;
    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    #    include        fastcgi_params;
    #}

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}

Meu gol é: quando eu executo link (ou algum outro caminho na mesma porta), a primeira vez (cache miss) eu poderia dar conteúdo do localhost: 8080 / shaka-player-master / demo / index.html

e, em seguida, quando eu recarregar localhost: 9000, há um acerto de cache.

Eu usaria o nginx como cache de proxy porque eu configuraria um CDN usando mais instâncias nginx (containers).

Espero que alguém possa me ajudar nessa configuração do nginx, porque estou gastando muito tempo tentando corrigir esse problema.

Obrigado.

    
por pier92 20.12.2016 / 11:52

1 resposta

0

Não vejo nada na sua configuração que permita o armazenamento em cache. A definição de proxy é: um servidor que atua como intermediário. Às vezes, o pode armazenar em cache, às vezes, faz outras coisas intermediárias. O proxy_pass não implementa o armazenamento em cache.

O cache ngingx mais simples é proxy_cache_path plus proxy_cache .

    
por 20.12.2016 / 12:43