我需要安装postfixadmin作为nginx中托管的域的子文件夹。
换句话说,我正在尝试使用http://example.com/postfixadmin
访问postfixadmin在物理上,网站的内容以这种方式存储:
我已尝试在example.com的server
部分添加此内容:
location ~ /posfixadmin/ {
root /var/www;
index index.php;
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php5-fpm.sock;
}
上述部分工作,PHP脚本正确执行,但未加载/var/www/postfixadmin/css
和/var/www/postfixadmin/images
下的css和图像文件。
我已检查生成的html代码,并使用相对路径调用postfixadmin中的css和图像文件的链接,如下所示:
href="css/default.css"
我认为nginx尝试从http://example.com/css而不是http://example.com/postfixadmin/css获取css文件,这就是为什么它失败了,我尝试过这样的事情:
location /postfixadmin/css/ {
root /var/www/postfixadmin;
}
但上述情况不起作用。
有关如何解决此问题的任何想法?提前谢谢!
答案 0 :(得分:1)
我知道这是一个老话题,但是仍然:不要在“ location”块中使用“ root”。来源:https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/
这对于当前的PostfixAdmin 3.2(将所有面向公众的内容移动到“ public”子目录中)目前适用。请注意,我已经在其他地方定义了fastcgi_pass,因此该位不直接适用。
location /postfixadmin {
alias /usr/local/www/postfixadmin/public;
location ~ ^(.+\.php)(.*)$ {
fastcgi_pass php;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
include fastcgi_params;
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_read_timeout 180;
fastcgi_buffers 4 256k;
fastcgi_buffer_size 128k;
}
location ~ \.php {
include /usr/local/etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_pass php;
fastcgi_index index.php;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
location ~ /\.ht {
deny all;
}
}