设置 Apache2 以使用多个“cgi-bin”需要哪些步骤

设置 Apache2 以使用多个“cgi-bin”需要哪些步骤

目前我的 /etc/apache2/sites-enabled/000-default.conf 如下所示:

DocumentRoot /var/www/htm
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
Options +ExecCGI
AddHandler cgi-script .cgi .pl
Options FollowSymLinks
Require all granted
</Directory>

我有多个域,我想访问 Nas 上的端口 80。在我的 Qnap 上,每个域都有自己的文件夹,标题为“domain.com”,其中包含“.htaccess”,许多“.html”包含 <!—#exec cgi、<!--#include virtual,每个域都包含自己的“cgi-bin”目录。

有人能告诉我“.000-default.conf”应该是什么样子才能实现我的目标吗?谢谢!

答案1

而不是把所有东西都放进去配置文件,请考虑将每个域放在各自的.conf文件中。这将允许您指定除使用哪个 CGI-bin 之外的更多内容。

例如:

地点 配置文件
示例.com /etc/apache2/sites-available/000-example-com.conf
secondary.com /etc/apache2/sites-available/001-secondary-com.conf
tertiary.com /etc/apache2/sites-available/002-tertiary-com.conf
默认网站 /etc/apache2/sites-available/999-default-com.conf

您可以使用 启用(或禁用)每个站点a2ensite,例如:

sudo a2ensite 002-tertiary-com.conf`

这样可以将所有内容分开并“干净”。999-default如果 Web 流量流向未明确定义的域的服务器,Apache 将使用“全部捕获”功能。您可以使用文件ServerAlias中的一行.conf来实现这一点。

通过这种设置,您的每个.conf文件可能看起来像这样:

<VirtualHost *:80>
        ServerAdmin [email protected]
        DocumentRoot /var/www/example/public
        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/

        ServerName example.com
        ServerAlias example.com *.example.com
        DirectoryIndex index.php index.html

        ErrorLog ${APACHE_LOG_DIR}/example-error.log
        CustomLog ${APACHE_LOG_DIR}/example-access.log combined
</VirtualHost>

<Directory /var/www/example.com/public>
        Options FollowSymLinks
        AllowOverride All

        Order Allow,Deny
        Allow From All
</Directory>

<Directory "/usr/lib/cgi-bin">
         Options +ExecCGI
         AddHandler cgi-script .cgi .pl
         Options FollowSymLinks
         Require all granted
</Directory>

笔记:请务必根据需要替换站点的值,包括对不同cgi-bin位置的引用。

这应该为您提供让多个域使用不同版本软件所需的特殊性(和灵活性)。

相关内容