子目录上的 Nginx FastCGI

子目录上的 Nginx FastCGI

我正在尝试让 Nginx 代理多个 Web 应用程序(其中包括 Tiny Tiny RSS 和 phpPgAdmin)到同一域下的不同子目录中。

例如,TT RSS 位于 /home/ttrss/www/ 下,由用户“ttrss”下运行的 PHP5 FPM 进程提供服务,其他 webapps 也遵循相同的模型。

以下是相关的 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,我想知道我使用的方式是否是“正确的方式”,或者是否存在我不知道的不同、更简单或更好的方式。

答案1

我以前从未使用过 Nginx,我想知道我这样做是否“正确”,

有各种各样的初学者文档可供使用@nginx 社区我认为您应该先阅读这些指南,如果有具体问题再回来。

答案2

您应该能够使用嵌套位置来解决这个问题。您可能需要摆弄包含项以避免重复太多。

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$ {
     ...
     }

  }

答案3

您必须在 /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

我希望这能帮到你

相关内容