我在网上来回搜索答案,但毫无收获。我尝试设置基于端口的虚拟主机,我可以使用默认的 :80 端口,但我的其他虚拟主机都返回“您无权访问此服务器上的 /”。
000-默认.conf
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /home/user/website
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
站点1.conf
<VirtualHost *:8080>
ServerAdmin webmaster@localhost
DocumentRoot /home/user/site1
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
站点2.conf
<VirtualHost *:8081>
ServerAdmin webmaster@localhost
DocumentRoot /home/user/site2
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
端口配置文件
# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default.conf
Listen 80
Listen 8080
Listen 8081
<IfModule ssl_module>
Listen 443
</IfModule>
<IfModule mod_gnutls.c>
Listen 443
</IfModule>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
a2ensite 已在所有三个站点上运行,并且服务 apache2 reload 已运行,并且没有发布任何错误。
每个目录中都有一个简单的index.html
页面,这样我就可以知道哪个站点正在加载。 [ipaddress]
或[ipaddress]:80
显示000-default.conf
索引页。 [ipaddress]:8080
两者[ipaddress]:8081
都返回
您无权访问此服务器上的/。
任何对新手的帮助都将不胜感激。
答案1
为了让 Apache 显示虚拟服务器中托管的页面/文件,您需要确保它们归用户所有www-data
,因为 Apache 在该用户下运行。请确保执行以下操作:
sudo chown -R www-data: /path/to/virtual/server/document/root
sudo chmod 755 /path/to/virtual/server/document/root
对于您配置的每个虚拟服务器。
但等一下!现在我的用户不能修改这些文件!
轻松解决!您只需将您的用户添加到www-data
组中即可!
sudo usermod -a -G www-data youruser
注销,然后重新登录以使组更改生效,一切都会好起来。
还是行不通?
添加以下行到/etc/apache2/apache2.conf
:
<Directory /home/user>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
然后运行sudo service apache2 reload
,一切就正常了。
答案2
解决方案是添加:
<Directory /home/user/siteN>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
对于每个文件。文件可以由用户拥有,如果用户已添加到组,.conf
则文件不需要由用户拥有。www-data
www-data