LINUX.ORG.RU
ФорумAdmin

Переменные в Nginx

 


0

1

Хочу в конфиге виртуального хоста, в одном месте, указать путь где лежат все приложения и название приложения. А остальные данные формировать на основе этих переменных.

Попробовал сделать так:

set $app dobroserver-blog;
set $app_path /data/projects/$app;

upstream $app {
  server unix:$app_path/shared/unicorn.sock fail_timeout=0;
}

server {
  listen localhost:80;

  keepalive_timeout 5;
  client_max_body_size    1G;
  client_body_buffer_size 128k;

  root $app_path/current/public;

  access_log off;
  error_log  $app_path/shared/log/nginx_error.log;
  rewrite_log on;

  # Rails error pages
  error_page 500 502 503 504 /500.html;
  location = /500.html {}

  # Rails assets pipeline
  location ~ ^/assets/ {
    expires 1y;
    add_header Cache-Control public;
    add_header ETag "";
    break;
  }

  location / {
    try_files $uri @unicorn;
  }

  location @unicorn {
    proxy_pass  http://$app;
    proxy_redirect     off;

    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_connect_timeout      90;
    proxy_send_timeout         90;
    proxy_read_timeout         90;

    proxy_buffer_size          4k;
    proxy_buffers              4 32k;
    proxy_busy_buffers_size    64k;
    proxy_temp_file_write_size 64k;
  }

}

Но конечно же nginx ругается:

nginx: [emerg] "set" directive is not allowed here

Но если я перенесу переменные в server {}, то для upstream {} придётся путь прописывать вручную.

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.