我想使用 nginx 作为多个应用程序的反向代理(在 docker 中)。它们存在于 nginx 容器中的不同目录中:/var/www/app1
、/var/www/app2
等。
我的default.conf
:
resolver 127.0.0.11 valid=15s;
server {
listen 80;
server_name www.example.com example.com;
set $upstream phpmyadmin:9000;
location ^~ /phpmyadmin {
#alias /var/www/html/; # <----- this works
alias /var/www/phpmyadmin/;
index index.php;
location ~ \.php$ {
try_files $uri = 404;
fastcgi_pass $upstream;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $request_filename;
}
}
}
如果我安装 docker 应用程序(phpmyadmin),/var/www/html/
则上述 nginx 配置即可工作。
但我真正想要的是将其安装到 中/var/www/phpmyadmin/
。当我这样做时,我收到错误:
FastCGI 在 stderr 中发送:“主脚本未知”,同时从上游读取响应头
答案1
删除前缀$fastcgi_script_name
:
fastcgi_split_path_info ^\/phpmyadmin\/(.+\.php)(.*)$;
然后使用它:
fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;