成功安装 Varnish 后,PHPmyadmin 无法在文档根目录上运行

成功安装 Varnish 后,PHPmyadmin 无法在文档根目录上运行

上周我安装了 Varnish,现在我的网站运行良好 - 我可以浏览和更改它们而不会出现错误。安装时,我将 Varnish 放在端口 80 上,并将 Apache 移至端口 8080。

后来我注意到,如果我在浏览器中运行以下命令,我将无法访问 phpmyadmin:

我的 IP:80/phpmyadmin 我的 IP:8080/phpmyadmin

但是,如果我将 phpmyadmin 移动到 /var/www/html/site_dir/phpmyadmin 我确实可以通过 domain.tld/phpmyadmin 毫无问题地访问它

但是有些奇怪的是,现在看起来任何带有 IP_ADDRESS 的东西都无法工作,甚至浏览器中没有 IP_ADDRESS 的网站也不起作用:

MY_IP/域名.tld MY_IP/域名.tld/phpmyadmin MY_IP:8080/域名.tld/phpmyadmin

我的问题是为什么我无法从任何浏览器访问服务器中除 Apache index.html 页面之外的任何 IP 内容?


我安装 Varnish 的方式是这样的:

cd ~
apt-get update && apt-get install varnish -y
sed -i 's/Listen 80/Listen 8080/g' /etc/apache2/ports.conf
sed -i 's/\*\:80/\*\:8080/g' /etc/apache2/sites-available/000-default.conf
sed -i 's/\*\:80/\*\:8080/g' /etc/apache2/sites-available/domain.tld.conf && domain.tld.conf
mkdir -p /etc/systemd/system/varnish.service.d # Be aware! You might not need this in the future.
cat <<-'VARNISH' > /etc/systemd/system/varnish.service.d/customexec.conf
    [Service]
    ExecStart=
    ExecStart=/usr/sbin/varnishd -j unix,user=vcache -F -a :80 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,256m
VARNISH
systemctl restart apache2.service && systemctl daemon-reload && systemctl restart varnish.service

答案1

这是(相对)正常的行为。

您的 Apache 配置已配置为/var/www/html/site_dir从您的域提供服务。这意味着当您从您的域 ping 您的站点时,您实际上无法访问此目录中不包含的任何内容。如果您想从域名访问 PHPmyAdmin,您必须将其移动到site_dir,或将您的 webroot 更改为/var/www/html并移动所有其他文件。

或者,您可以为 PHPmyAdmin 创建一个具有自己域名的新 virthost,如下所示:

<VirtualHost pma.example.com:8080>
    ServerName pma.example.com

    ServerAdmin [email protected]
    DocumentRoot /var/www/html/phpmyadmin/

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    [ anything else ... ]
</VirtualHost>

至于为什么你无法通过你的 IP 地址访问任何东西,那是因为你的域的 virthost 配置为你的域。当 Apache 无法匹配你的任何 virthosts 时,它会回退到000_default,它没有设置 ServerName 并监听一切。如果您希望您的网站始终可访问(通过 IP 或其他方式),则需要以与000_default配置相同的方式配置当前的 virthost(或只需重新配置000_default并禁用您的自定义 virthost)。或者,创建一个与您的 IP 匹配的新 virthost。

如果您想将 IP 地址作为管理 PHPmyAdmin 等内容以及存储在 中的其他所有内容的“后门” ,则可以通过确保进行/var/www/html设置。但请注意,这将带来轻微的安全威胁,特别是当您从网站托管多个域时。DocumentRoot/var/www/html

相关内容