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

Nginx FastCGI в подкаталогах

Я пытаюсь сделать прокси-сервер Nginx для нескольких веб-приложений (среди прочего, Tiny Tiny RSS и phpPgAdmin) в разных подкаталогах в одном домене.

Например, TT RSS находится в / home / ttrss / www /, обслуживается процессом PHP5 FPM, работающим под пользователем «ttrss», а другие веб-приложения следуют той же модели.

Вот соответствующая конфигурация Nginx:

# Tiny Tiny RSS
location /ttrss/ {
  alias /home/ttrss/www/;
  index index.php;
}

location ~ /ttrss/.*\.php$ {
  if ($fastcgi_script_name ~ /ttrss(/.*\.php)$) {
    set $valid_fastcgi_script_name $1;
  }
  include fastcgi_params;
  fastcgi_pass 127.0.0.1:9000;
  fastcgi_index index.php;
  fastcgi_param SCRIPT_FILENAME /home/ttrss/www/$valid_fastcgi_script_name;
}

Я никогда раньше не использовал Nginx и хотел бы знать, является ли то, как я это сделал, «правильным», или есть другой, более простой или просто лучший способ, о котором я не знал.

Вы должны решить эту проблему с помощью вложенных местоположений. Скорее всего, вам придется возиться с включениями, чтобы не дублировать слишком много.

location /tt-rss/ {

    root /my/install/dir/for/ttrss; 
    index index.php;

    # block these
    location ~* (include/|lock/|utils/|locale/|classes/*) {
         deny all;
    }

    # PHP ttrss
    location ~ \.php$ {
     ...
     }

  }

Я никогда раньше не использовал Nginx и хотел бы знать, является ли то, как я это сделал, «правильным»,

доступно множество документации для начинающих @ wiki.nginx.org и я думаю, вам следует сначала прочитать эти руководства и вернуться, если у вас есть конкретные вопросы.

вы должны создать в / etc / nginx / sites-enabled /

ttrss такой файл, который будет вашим виртуальным хостом

server {
     listen 80;
     server_name localhost;
     root /var/www/;
     server_tokens off;
     access_log /dev/null;
     error_log /var/log/nginx/ttrss.error.log;
     index index.php;

    location ~ \.php${
          {Your PHP Configuration}
     }
}
  • Сохраните файл.

Затем перезапустите nginx, чтобы принять изменения.

/etc/init.d/nginx restart

Я надеюсь это тебе поможет