Nginx fastcgi разделяет информацию о пути с почтальоном
Я использую mailman с nginx, чтобы получить его веб-интерфейс, это моя конфигурация nginx:
location /cgi-bin/mailman {
root /usr/lib/;
fastcgi_split_path_info (/cgi-bin/mailman[^/]*)/(.*)$;
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $fastcgi_path_info;
fastcgi_intercept_errors on;
fastcgi_pass unix:/var/run/fcgiwrap.socket;
}
кажется, это работает хорошо, когда я звоню mydomain.com/cgi-bin/mailman/listinfo
, но когда я запрашиваю что-то вроде: mydomain.com/cgi-bin/mailman/listinfo/mylist
я получил 403
и в журнале ошибок nginx:
FastCGI sent in stderr: "Cannot chdir to script directory (/usr/lib/cgi-bin/mailman/listinfo)" while reading response header from upstream
Я попробовал все доступные регулярные выражения, чтобы заставить его работать, но это все еще дает 403
любая помощь или любая подсказка, чтобы заставить это работать.
1 ответ
У меня такая же проблема. Я нахожу решение где-то: просто закомментируйте
fastcgi_param SCRIPT_FILENAME $request_filename;
линия в /etc/nginx/fastcgi_params
, Это работает, но я думаю, что лучше не комментировать эту строку, просто поменяйте местами порядок включения этого файла и определения собственного SCRIPT_FILENAME:
location /cgi-bin/mailman {
root /usr/lib/;
fastcgi_split_path_info (/cgi-bin/mailman[^/]*)/(.*)$;
fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
include /etc/nginx/fastcgi_params;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $fastcgi_path_info;
fastcgi_intercept_errors on;
fastcgi_pass unix:/var/run/fcgiwrap.socket; }
Теперь это работает для меня.