我正在尝试使用 Ubuntu 14.04 在 Apache2 中设置虚拟主机。文件内容host1.com.conf
如下:
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName host1.com
ServerAlias www.host1.com
DocumentRoot /var/www/host1.com/public_html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
内容
/etc/hosts
:127.0.0.1 localhost 127.0.1.1 chandni-X451CA 127.0.0.1 host1.com ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters
内容
/etc/apache2/sites-available/default-ssl
:<IfModule mod_ssl.c> <VirtualHost _default_:443> ServerAdmin [email protected] DocumentRoot /var/www/host1.com/public_html <Directory /var/www/host1.com/public_html> Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined SSLEngine on SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key <FilesMatch "\.(cgi|shtml|phtml|php)$"> SSLOptions +StdEnvVars </FilesMatch> <Directory /usr/lib/cgi-bin> SSLOptions +StdEnvVars </Directory> BrowserMatch "MSIE [2-6]" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown </VirtualHost> </IfModule>
从终端禁用
000-default.conf
和启用:host1.com
sudo a2dissite 000-default.conf && sudo a2ensite host1.com.conf
重新启动Apache:
sudo service apache2 restart
做完这些之后,
- 当我转到 localhost 页面时我得到403 禁止错误。
- 当我输入我的公共 IP 地址作为 URL 时,页面未加载
- 当我导航到 host1.com 时,页面未加载。
可能的原因是什么?有人可以帮忙吗?
答案1
当您的 Web 服务器无法访问 DocumentRoot 文件夹时,就会出现此错误。您必须检查在 DocumentRoot 变量中指定的文件夹的父文件夹的权限。www-data 必须具有对父文件夹的读取和执行权限,还必须具有对 DocumentRoot 目录下文件的读取权限。您可以通过将文件和文件夹的所有者更改为 www-data 或授予所有其他人读取和执行权限来解决此问题。