如何向 apache 添加另一个应用程序?

如何向 apache 添加另一个应用程序?

我正在关注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) 就可以了。

相关内容