仅允许在指定的虚拟主机上访问 PhpMyadmin

ale*_*rio 10 php virtualhost apache-2.2

我正在处理多虚拟主机环境。我已经为 Mysql 远程控制安装了 PhpMyadmin。

环境配置如下:

one.domain.com
two.domain.com
onlyphpmyadmin.domain.com
Run Code Online (Sandbox Code Playgroud)

现在,如果我访问三个域之一

http://one.domain.com/phpmyadmin/
http://two.domein.com/phpmyadmin/
http://onlyphpmyadmin.domain.com/phpmyadmin/
Run Code Online (Sandbox Code Playgroud)

结果是一样的,允许访问phpmyadmin。

目标是获得如下所示的情况

http://one.domain.com/phpmyadmin/ --> access denied
http://two.domein.com/phpmyadmin/ --> access denied 
http://onlyphpmyadmin.domain.com/phpmyadmin/ -->access allowed
Run Code Online (Sandbox Code Playgroud)

没有类似于

<?php 
if($_SERVER['HTTP_HOST'] != 'onlyphpmyadmin.domain.com')
die('access denied');

 ...
 ?>
Run Code Online (Sandbox Code Playgroud)

在一些 phpmyadmin 文件上。


这是我的 phpmyadmin 配置文件

Alias /phpmyadmin /usr/share/phpmyadmin

<Directory /usr/share/phpmyadmin>
    Options FollowSymLinks
    DirectoryIndex index.php

    <IfModule mod_php5.c>
        AddType application/x-httpd-php .php

        php_flag magic_quotes_gpc Off
        php_flag track_vars On
        php_flag register_globals Off
        php_admin_flag allow_url_fopen Off
        php_value include_path .
        php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
        php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/
    </IfModule>

</Directory>

# Authorize for setup
<Directory /usr/share/phpmyadmin/setup>
    <IfModule mod_authn_file.c>
    AuthType Basic
    AuthName "phpMyAdmin Setup"
    AuthUserFile /etc/phpmyadmin/htpasswd.setup
    </IfModule>
    Require valid-user
</Directory>

# Disallow web access to directories that don't need it
<Directory /usr/share/phpmyadmin/libraries>
    Order Deny,Allow
    Deny from All
</Directory>
<Directory /usr/share/phpmyadmin/setup/lib>
    Order Deny,Allow
    Deny from All
</Directory>
Run Code Online (Sandbox Code Playgroud)

use*_*517 26

删除别名声明

Alias /phpmyadmin /usr/share/phpmyadmin
Run Code Online (Sandbox Code Playgroud)

从服务器上下文并将其放在相关的虚拟主机上下文中

<VirtualHost *:80>
    ServerName onlyphpmyadmin.domain.com
    .
    .
    .
    Alias /phpmyadmin /usr/share/phpmyadmin
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

将整个 phpmyadmin 配置包含到相关的 vhost 中可能更容易和更可取

<VirtualHost *:80>
    ServerName onlyphpmyadmin.domain.com
    .
    .
    .
    include /path/to/phpmyadmin.conf
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

然后从服务器上下文中删除该包含并重新启动 apache 以使更改生效。