nginx 中有多个应用程序;一个是根应用程序,另一个不是

nginx 中有多个应用程序;一个是根应用程序,另一个不是

这是我的 phpmyadmin 配置文件:

server {
    listen   8080;
    server_name  phpmyadmin;

    access_log  /var/log/nginx/phpmyadmin.access.log;
    error_log   /var/log/nginx/phpmyadmin.error_log warn;

    root   /var/www/phpmyadmin;
    index  index.php index.htm;

    location ~ \.php {
            include /etc/nginx/fastcgi_params;
            keepalive_timeout 0;
            fastcgi_param   SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            fastcgi_pass    127.0.0.1:9000;
    }
}

现在当我访问时,http://domain.com:8080它会打开 phpmysdmin 网站。我希望它只在访问时打开 phpmyadmin http://domain.com:8080/phpmyadmin。我需要在这里进行哪些更改?

我有大约 4 或 5 个应用程序要从 nginx 运行,并且我希望将每个应用程序保存在自己的sites-enabled配置文件中,而不是一个涵盖所有应用程序的大配置文件中。

答案1

更详细一点:

server {
  listen       8080;
  server_name  phpmyadmin;

  access_log  /var/log/nginx/phpmyadmin.access.log;
  error_log   /var/log/nginx/phpmyadmin.error_log warn;
  location ~ /phpmyadmin/.*\.php {
    root            /var/www;
    include         /etc/nginx/fastcgi_params;
    fastcgi_param   SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    fastcgi_pass    127.0.0.1:9000;
  }
  location /phpmyadmin/ {
    root   /var/www;
    index  index.php;
  }
  location = /phpmyadmin {
    rewrite ^ /phpmyadmin/index.php;
  }
  location / {
    return 403;
  }
}

还要注意根设置:它与请求路径有关,而不是其后的任何内容。因此,请求http://phpmyadmin/phpmyadmin/index.php将使 nginx 尝试在 $root/phpmyadmin/index.php 中查找文件,其中 $root 是位置块中设置的根路径。

答案2

使用地点:

location /phpmyadmin {
        root   /var/www/phpmyadmin;
        include /etc/nginx/fastcgi_params;
        keepalive_timeout 0;
        fastcgi_param   SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        fastcgi_pass    127.0.0.1:9000;
}

相关内容