Altere a raiz do documento Nginx de / usr / share / nginx para / etc / nginx

1

Eu tentei muitas coisas, STFW, RTFM, mas ainda tenho esse problema. O problema é:

Eu tenho um Nnginx instalado em uma máquina da AWS (outro fella instalou, não eu) e eu devo servir vários hosts virtuais (arquivos * .conf) que estão sendo puxados de outro servidor (máquina de produção)

Meu principal problema, é que o caminho dos manipuladores de erros neste arquivo .conf são parentes, por exemplo:

html/errores-prxy/handle404.html

como em

 location = /handle404.html {
     root html/errores-prxy;
}

O problema é que o caminho da raiz do documento que está sendo chamado para este manipulador é / usr / share / nginx, como eu posso ver no log de erros:

2015/04/30 10:33:24 [error] 19542#0: *68 open() "/usr/share/nginx/html/errores-prxy/handle404.html" failed (2: No such file or directory), client: 77.240.116.140, server: www.abengoa.com, request: "GET / HTTP/1.1", upstream: "http://172.26.3.9:80/web/", host: "www.abengoa.es"

Nesta máquina da AWS, o Nginx é instalado em / etc / nginx. E esses arquivos do manipulador estão em /etc/nginx/html/errores-prxy/handle404.html

Então, minha pergunta seria: como posso fazer o Nginx parecer em / etc / nginx em vez de em / usr / share / nginx /?

Eu poderia fazer um script para alterar os caminhos relativos para caminhos absolutos em todos os * .conf, mas estou procurando uma solução mais elegante, como seria mudar a raiz do documento Nginx.

Muito obrigado antecipadamente.

Abaixo está o meu nginx.conf (localizado em /etc/nginx/nginx.conf, caso seja necessário)

user              nginx nginx;
worker_processes  2;
error_log       /var/log/nginx/error.log;
pid             /var/run/nginx.pid;

events {
                worker_connections  4096;
}

http {
                include         /etc/nginx/conf/mime.types;
                default_type    application/octet-stream;
                sendfile        on;
                gzip            on;
                gzip_comp_level 9;
                gzip_min_length 0;
                gzip_proxied    expired no-cache no-store private auth;
                gzip_types      text/plain text/css application/x-javascript application/xml application/javascript;
                set_real_ip_from        192.168.151.3;
                real_ip_header   X-Forwarded-For;
                proxy_set_header   Host             $host;
                proxy_set_header   X-Real-IP        $remote_addr;
                proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
                proxy_intercept_errors on;
                log_format main '$remote_addr - $remote_user [$time_local] '
                        '"$request" $status $body_bytes_sent "$http_referer" '
                        '"$http_user_agent"' ;
                access_log      /var/log/nginx/access.log main;

                client_max_body_size            50m;
                client_body_buffer_size         4k;
                client_header_buffer_size       2k;
                keepalive_timeout               5 5;
                client_body_timeout             10;
                client_header_timeout           10;
                send_timeout                    10;
                proxy_connect_timeout           5;
                proxy_send_timeout              20;
                proxy_read_timeout              120;
                proxy_buffer_size               8k;
                proxy_buffers                   8 32k;
                proxy_busy_buffers_size         32k;
                proxy_temp_file_write_size      32k;
                server_names_hash_bucket_size   128;
                server_names_hash_max_size      1280;
                server_name_in_redirect         off;
                proxy_cache_path  /etc/nginx/cache  levels=1:2   keys_zone=prxy-cache:100m max_size=256m;
                proxy_cache_key   "$scheme$host$request_uri";
                include /etc/nginx/conf/*.conf;
                include /etc/nginx/conf/sites-enables/*.conf;
}

    
por Luis Garnica Guilarte 30.04.2015 / 13:03

1 resposta

1

docs nginx declaram o seguinte sobre o comando --prefix configure :

--prefix=path — defines a directory that will keep server files. This same directory will also be used for all relative paths set by configure (except for paths to libraries sources) and in the nginx.conf configuration file. It is set to the /usr/local/nginx directory by default.

Assim, todos os caminhos relativos são computados contra este.

Para verificar o valor prefix do binário que você usa, verifique nginx -V .

No seu caso, vejo várias opções, do melhor para o pior:

  1. Use caminhos absolutos (diretamente ou prefixando caminhos existentes com uma variável). Um script simples tornaria fácil transformar os caminhos originais em propers, até mesmo lançados como um 'post-hook' no arquivo, soltados por os caras
  2. Crie links simbólicos nos locais computados referentes ao esperado
  3. Crie binários do nginx manualmente, configurando o comando como achar melhor
por 27.01.2018 / 23:53