在nginx中的域的子文件夹中安装postfixadmin

时间:2017-04-04 16:42:37

标签: nginx subdirectory

我需要安装postfixadmin作为nginx中托管的域的子文件夹。

换句话说,我正在尝试使用http://example.com/postfixadmin

访问postfixadmin

在物理上,网站的内容以这种方式存储:

  • example.com网站/ var / www / example
  • / var / www / 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;
  }

但上述情况不起作用。

有关如何解决此问题的任何想法?提前谢谢!

1 个答案:

答案 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;
    }
}