上周我安装了 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