我现在为让 mailman 和 nginx 运行而苦恼了好一阵子。一切运行正常,但如果用户只访问域名,我就会收到 HTTP 502 错误。
我如何告诉 nginx 它应该使用 /listinfo 作为默认位置?我无法通过部分指定它,try_files $uri /listinfo
因为location /
这样每个站点都会转发到 /listinfo。不知何故,这不能很好地与 cgis 配合使用...
这是我当前的配置:
server {
listen [::]:80;
root /usr/lib/cgi-bin/mailman/;
location = /mailman/listinfo {
rewrite ^ /listinfo permanent;
}
location / {
fastcgi_split_path_info (^/[^/]*)(.*)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/var/run/fcgiwrap.socket;
}
location /images/mailman {
alias /usr/share/images/mailman;
}
location /pipermail {
alias /var/lib/mailman/archives/public;
autoindex on;
}
}
我可以定义一个位置来匹配类似的 URL http://example.com/
(没有给出任何参数)吗?
答案1
我通过添加仅匹配的规则修复了这个问题/
:
location = / {
rewrite ^ /listinfo permanent;
}
如果有人有更好的解决方案,请发布!