我正在尝试设置两个虚拟主机,一个用于我的网站,另一个用于我的nextcloud实例。这是我的配置文件:
/etc/apache2/site-available/000-default.conf
<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时,希望它加载我的网站/var/www/html
。但是,它将加载我的nextcloud(/var/www/nextcloud
)实例。如何使domain.com重定向到我的网站而不是我的nextcloud实例?
答案 0 :(得分:0)
您应该像这样修改您的配置(以下说明):
/etc/apache2/site-available/000-default.conf
<VirtualHost _default_:80>
ServerName domain.com
ServerAlias www.domain.com
DocumentRoot "/var/www/html"
CustomLog /var/log/apache2/80_nc-access.log combined
ErrorLog /var/log/apache2/80_nc-error.log
<Directory /var/www/html/>
Options +FollowSymlinks
AllowOverride All
<IfModule mod_dav.c>
Dav off
</IfModule>
LimitRequestBody 0
</Directory>
</VirtualHost>
/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/443_nc-access.log combined
ErrorLog /var/log/apache2/443_nc-error.log
SSLEngine on
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
<Directory /var/www/nextcloud/>
Options +FollowSymlinks
AllowOverride All
<IfModule mod_dav.c>
Dav off
</IfModule>
LimitRequestBody 0
SSLRenegBufferSize 10486000
</Directory>
</VirtualHost>
</IfModule>
更改
http://
连接。因此,我删除了与SSL相关的所有内容。<Directory>
伪指令应包含在<VirtualHost>
部分中。无论如何,这些仅在您的<VirtualHost>
上下文中才有意义。 httpd.conf中应该有一个通用的<Directory>
,它会阻止直接访问所有目录。<VirtualHost>
使用单独的日志文件。这是一个好习惯,相信我,我有20台主机的Apache服务器,不可能弄清楚哪个日志条目是针对哪个的。另外,您可能想将SSL放入“调试”日志中以进行故障排除... <VirtualHost>
,请输入http://example.com
<VirtualHost>
,请输入https://example.com
这里没有重定向。仅<Virtualhost>
名称和端口分配。 Apache查看您要查询的内容(浏览器地址栏中的网站),并使用最符合您要求的<VirtualHost>
。如果找不到特定的,则默认使用第一个。
这说明了为什么如果尝试使用https://example.com
,Apache将基于端口选择<VirtualHost>
。这是端口443(https://)。因此,Apache将以您的云<VirtualHost>
进行响应。端口是此处的决定因素,不是域名。