我正在尝试设置两个虚拟主机,一个用于我的网站,另一个用于我的NextCloud示例。这就是我的配置文件的样子:
第一个月
<IfModule mod_ssl.c>
<VirtualHost _default_:80>
ServerName domain.com
ServerAlias www.domain.com
DocumentRoot "/var/www/html"
CustomLog /var/log/apache2/nc-access.log combined
ErrorLog /var/log/apache2/nc-error.log
SSLEngine on
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
</VirtualHost>
<Directory /var/www/html/>
Options +FollowSymlinks
AllowOverride All
<IfModule mod_dav.c>
Dav off
</IfModule>
LimitRequestBody 0
SSLRenegBufferSize 10486000
</Directory>
</IfModule>
字符串/etc/apache2/site-available/nextcloud.conf
个
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerName nextcloud.domain.com
DocumentRoot "/var/www/nextcloud"
CustomLog /var/log/apache2/nc-access.log combined
ErrorLog /var/log/apache2/nc-error.log
SSLEngine on
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
</VirtualHost>
<Directory /var/www/nextcloud/>
Options +FollowSymlinks
AllowOverride All
<IfModule mod_dav.c>
Dav off
</IfModule>
LimitRequestBody 0
SSLRenegBufferSize 10486000
</Directory>
</IfModule>
型apache2ctl -S
的输出,显示激活的主机:
VirtualHost configuration:
*:80 domain.com (/etc/apache2/sites-enabled/000-default.conf:2)
*:443 nextcloud.domain.com (/etc/apache2/sites-enabled/nextcloud.conf:2)
ServerRoot: "/etc/apache2"
Main DocumentRoot: "/var/www/html"
Main ErrorLog: "/var/log/apache2/error.log"
Mutex ssl-cache: using_defaults
Mutex default: dir="/var/run/apache2/" mechanism=default
Mutex watchdog-callback: using_defaults
Mutex rewrite-map: using_defaults
Mutex ssl-stapling-refresh: using_defaults
Mutex ssl-stapling: using_defaults
Mutex proxy: using_defaults
PidFile: "/var/run/apache2/apache2.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="www-data" id=33
Group: name="www-data" id=33
型
当我domain.com在浏览器中输入www.example.com时,我希望它加载/var/www/html
,我的网站。但是,它加载了我的nextcloud(/var/www/nextcloud
)示例。如何让domain.com重定向到我的网站而不是我的nextcloud示例?
2条答案
按热度按时间6tr1vspr1#
您应该像这样修改您的配置(解释如下):
/etc/apache2/site-available/000-default.conf
字符串
/etc/apache2/site-available/nextcloud.conf
型
变更
http://
连接。所以我删除了所有与SSL有关的内容。<Directory>
指令应包含在<VirtualHost>
部分中。无论如何,这些只有在<VirtualHost>
的上下文中才有意义。在httpd.conf中应该有一个通用的<Directory>
,它无论如何都会阻止对所有目录的直接访问。<VirtualHost>
使用单独的日志文件。这是一个好习惯,相信我,我有一个Apache服务器,有20个主机,不可能弄清楚哪个日志条目是哪个。此外,您可能希望将SSL放在Debug日志中以解决某些问题...<VirtualHost>
,请输入http://example.com
<VirtualHost>
,请输入https://example.com
这里没有重定向。只有
<Virtualhost>
名称和端口分配。Apache会查看您请求的内容(浏览器地址栏中的站点),并使用最符合您请求的<VirtualHost>
。如果它找不到特定的一个,它将默认使用第一个。这就解释了为什么如果你尝试
https://example.com
,Apache会根据端口选择<VirtualHost>
。这里是端口443(https://)。所以Apache会用你的云<VirtualHost>
来响应。这里的决定因素是端口,不是域名。mkh04yzy2#
显然,Apache不喜欢从记事本上剪切和粘贴我清除了配置文件中的所有空白,然后一切都开始正常工作。
可能是空格之类的东西。也许是我的notepad设置的编码。