Назад | Перейти на главную страницу

Перезапись Nginx для конкретного каталога

Должен признать, что я совершенно новичок в WebServers и теперь пытаюсь понять, как настроить мой nginx (для домашних целей). Я уже запустил rutorrent веб-сервиса на моем nginx со структурой по умолчанию. Теперь я хочу изменить структуру dir на:

/usr/share/nginx/html/        (should contain the default-config)
/usr/share/nginx/rtorr_dir/   (should contain the rutorrent-content)

Моя цель: в моем браузере я хочу войти 192.168.0.2/rutorrent и это должно автоматически получить доступ к rtorr_dir. Я пробовал следующее:

server {
        listen *:80;

    access_log  /var/log/nginx/access.log info;
    error_log   /var/log/nginx/error.log debug;
    auth_basic      "ruser";
    auth_basic_user_file    /etc/users.htpasswd;

        location /rutorrent {
          rewrite /rutorrent/(.*) /$1 break;
          root /usr/share/nginx/rtorr_dir;
          index index.php index.html;
        }

        location /RPC1 {
          include /etc/nginx/scgi_params;
          scgi_pass backend2;
        }
        location ~  \.php$ {
          fastcgi_split_path_info ^(.+\.php)(.*)$;
          fastcgi_pass   backend;
        ....

Я тоже пробовал location / и другие варианты, но явно не подходящие :(. Так что мой вопрос будет

Ты можешь использовать alias в вашем случае использования. Ссылка: http://nginx.org/en/docs/http/ngx_http_core_module.html#alias

Так,

location /rutorrent {
  alias /usr/share/nginx/rtorr_dir;
}

Должно сработать. Вам все еще может понадобиться index и директивы.

Нужно ли мне что-то менять и для других мест, или это делается автоматически для базовых файлов (например, php)?

Поскольку вы используете несколько местоположений, я бы рекомендовал использовать location ~* \.php$ { в каждом из этих мест. Например...

location /rutorrent {
  alias /usr/share/nginx/rtorr_dir;
  try_files $uri $uri/ /index.php;

  location ~* \.php$ {
    # directives to process PHP
  }
}

location /another_random_location {
  alias /usr/share/nginx/another_random_directory;
  try_files $uri $uri/ /index.php;

  location ~* \.php$ {
    # directives to process PHP
  }
}

Если вы сохраняете блок местоположения PHP рядом другие блоки местоположения, тогда этот блок PHP будет получать свой путь только из root набор директив для server блок. Самый безопасный способ - включить блок местоположения PHP в каждое местоположение, которое необходимо для обработки PHP.

Надеюсь, это поможет.