我正在关注Ubuntu 版 Zabbix 安装教程它要求我添加一个/etc/apache2/sites-enabled/000-default
包含
Alias /zabbix /home/zabbix/public_html/
<Directory /home/zabbix/public_html>
AllowOverride FileInfo AuthConfig Limit Indexes
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
<Limit GET POST OPTIONS PROPFIND>
Order allow,deny
Allow from all
</Limit>
<LimitExcept GET POST OPTIONS PROPFIND>
Order deny,allow
Deny from all
</LimitExcept>
</Directory>
但我已经/etc/apache2/sites-enabled/railsapp
NameVirtualHost *:80
NameVirtualHost *:443
<VirtualHost *:80>
UseCanonicalName Off
Include /etc/apache2/conf/railsapp.conf
</VirtualHost>
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /etc/ssl/certs/cert.pem
Include /etc/apache2/conf/railsapp.conf
RequestHeader set X_FORWARDED_PROTO 'https'
</VirtualHost>
和/etc/apache2/sites-enabled/mercurial
NameVirtualHost *:8080
<VirtualHost *:8080>
UseCanonicalName Off
ServerAdmin webmaster@localhost
AddHandler cgi-script .cgi
ScriptAliasMatch ^(.*) /usr/lib/cgi-bin/hgwebdir.cgi/$1
</VirtualHost>
我认为无法访问 zabbix 页面是因为虚拟主机已经存在。如何解决此问题?
答案1
您有几个选择;1:将 zabbix 放在不同的端口上;2:使其在正常 vhost 下可访问。
对于#1,将 000-default 更新为:
文件根目录 /home/zabbix/public_html
AllowOverride FileInfo AuthConfig Limit Indexes Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec Order allow,deny 允许所有 Order denied,allow 拒绝所有
对于#2
将 000-default 移至 /etc/apache2/conf/zabbix.conf 并添加:
包括 /etc/apache2/conf/zabbix.conf
上面的 /etc/apache2/sites-enabled/railsapp 中类似的 Include 语句
答案2
您需要告诉 Apache 监听一个额外的端口,然后设置 Rails 应用程序的配置以使用不同的 NameVirtualHost 端口。
根据您提供的配置信息判断,Apache 配置中将有三个 Listen 参数:
Listen *:80
Listen *:443
Listen *:8080
这些可能分布在几个配置文件中,具体取决于 Apache 的配置方式。您需要添加第四个端口来监听 Rails 应用,例如 8081:
Listen *:80
Listen *:443
Listen *:8080
Listen *:8081
一旦这个额外的 Listen 指令到位,请编辑 /etc/apache2/sites-enabled/railsapp 文件并将第一个 NameVirtualHost 指令更改为 8081,例如:
NameVirtualHost *:8081
NameVirtualHost *:443
....
重新启动 Apache,您会发现 zabbix 在 80 上,Rails 应用程序在 8081/443 上,Mercurial 在 8080 上。
然而....
如果您可以在内部网络中设置 DNS 记录(我猜这是供内部使用的),则可以设置通过域名而不是端口区分的虚拟主机。这样,Apache 只需要监听默认端口 80 和 443,您就可以使用域名 URL 区分应用程序,例如:
zabbix.yourdomain.com
railsapp.yourdomain.com
mercurial.yourdomain.com
这样做的好处是,您可以继续添加不同的虚拟主机,而不必每次都使用新端口。网上有很多文档解释了如何设置它(暗示:请参阅 Ubuntu 文档)。
这种方法的唯一缺点是,由于协议的工作方式,只有一个虚拟主机可以在特定端口 (443) 上处理 HTTPS 请求。但是,如果您只需要对其中一个虚拟主机进行 HTTPS 访问,这不是问题,只要不告诉其他主机使用 HTTPS (443) 就可以了。