我的工作中有一个Jira和一个Confluence系统。 两者都在同一台服务器上运行。 访问Jira和Confluence的实际URL是:
http://foauslxapp05:8080/jira http;//foauslxapp05:8090/confluence
或者使用完整的主机名称:
http://foauslxapp05.foservices.corp:8080/jira http://foauslxapp05.foservices.corp:8090/confluence
为了简化一切,我设置了一个代理规则来允许用户这样做:
http://foauslxapp05/jira <-- Accessing Jira http://foauslxapp06/wiki <-- Accessing Confluence
我们的技术人员为foauslxapp05
创build了一对服务器别名,以便:
http://jira/jira <-- Accessing Jira http://jira.foservices.corp/jira <-- Accessing Jira http://wiki/wiki <-- Accessing Confluence http://wiki.foservices.corp/wiki <-- Accessing Confluence
我真正想要做的就是走下一步:
http://jira <-- Accessing Jira http://jira.foservices.corp <-- Accessing Jira http://wiki <-- Accessing Confluence http://wiki.foservices.copr <-- Accessing Confluence
问题当然是,DNS名称jira和wiki只是foauslxapp05的 DNS别名。 我需要检测用户input的URL(即用户请求的主机),然后基于该URL,我需要将用户redirect到正确的应用程序。
我甚至不太确定我应该看什么:这个VirtualHost? mod_rewrite的? mod_proxy的? 或者,这完全是另一回事。 我无法想象这样的事情太难做了。 不幸的是,我只是不太熟悉Apache httpd。
您可以通过在虚拟主机configuration中使用ServerAliasvariables来执行此操作,该configuration项可以支持服务器名称/别名列表:
你想要的是基于名称的虚拟主机。 因为你可能会得到很多关于如何构build这个问题的不好的build议,所以我build议把下面的内容作为一个很好的,清楚的(也许是稍微重复的)的方式。
但是在开始之前,我会说:Crowd适合这张照片(Crowd是将Jira和Confluence很好地结合在一起的SSO作品)。 在我们的部署中,我们有jira.example.com/jira,jira.example.com/confluence,以及/ crowd和/ servicedesk,以及接下来的任何内容。 你可能想要考虑你的解决scheme将如何增长(我并不是说你的解决scheme是坏的,甚至比我们的更糟糕,但这是值得铭记的)。
好的,到configuration。 您需要告诉Apache您正在使用基于名称的HTTP和HTTPS虚拟主机。
# Look in /etc/httpd/conf/httpd.conf NameVirtualHost *:443 NameVirtualHost *:80
推测你已经安装了mod_ssl,而mod_proxy_ajp反向代理回到为你提供Jira / Confluence等的tomcat servlet。
希望你熟悉设置mod_ssl,所以你有你的证书等我没有经验的SNI( 如果你还在使用RHEL5,这不是一个真正的select,但你没有说哪个版本你正在使用的RHEL),所以我假设你有一个名字如下的SAN证书:
如果您使用的是RHEL5或RHEL6,则需要为service httpd stop
; 编辑/ etc / sysconfig / httpd并启用worker MPM(取消HTTPD行的注释),这将给你更好的可伸缩性; 然后service httpd start
。 RHEL7默认使用httpd 2.4,并且有更新的事件MPM,我相信这会比以前的更好。
编辑/etc/httpd/conf/httpd.conf并注释掉不需要的任何模块(LoadModule …)。 如果您不知道,请一次执行几个步骤,然后使用apachectl configtest
来testing您的configuration,因为默认configuration将需要一些configuration。
当你在那里,我会build议启用KeepAlives; 非常好的性能提升。
我正在把所有这些虚拟主机放在/etc/httpd/conf.d/sites.conf中。 我希望你会明白,有一些明显的重复,但通过将每个名称/服务分隔成不同的VirtualHost节增加了大量的清晰度。
我将从显示所有站点(jira和confluence)的基本结构开始,然后为jira虚拟主机(另一个将非常相似)。
<VirtualHost *:80> ServerName jira.example.com </VirtualHost> <VirtualHost *:443> ServerName jira.example.com </VirtualHost> <VirtualHost *:80> ServerName confluence.example.com </VirtualHost> <VirtualHost *:443> ServerName confluence.example.com </VirtualHost>
好吧,这是相当高级的; 让我们仔细看看jira虚拟主机。 首先,我定义了一个HTTP访问的虚拟主机,它只是redirect到HTTPS。
<VirtualHost *:80> ServerName jira.example.com ErrorLog ... CustomLog ... Redirect 301 / https://jira.example.com/ </VirtualHost>
HTTPS网站的所有行动是:
<VirtualHost *:443> ServerName jira.example.com SSLEngine On SSLProtocol all -SSLv2 -SSLv3 # The following could be tigher... SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW # If using a SAN certificate, the following would be the same for crowd SSLCertificateFile /etc/pki/tls/certs/jira_etc.pem SSLCertificateKeyFile /etc/pki/tls/private/jira_etc.key SSLCertificateChainFile /etc/pki/tls/certs/jira_etc.pems ErrorLog ... # don't forget log rotation CustomLog ... # Enough boilerplate, down to Jira specifics. Check which ports are # used for each or jira/confluence etc. The command (as root or as # the account running the apps) may be helpful. You want the AJP port; # not the HTTP port. # # 'lsof -Pni | grep LISTEN | grep java' # Speed boost AddOutputFilterByType DEFLATE text/html text/plain text/xml ProxyPass / ajp://127.0.0.1:8009/jira ProxyPassReverse / ajp://127.0.0.1:8009/jira </VirtualHost>
提示:需要考虑的一件事是:如果有人要去http://foauslxapp05.foservices.corp/ (默认站点),或者直接访问服务器的IP地址,你会发生什么? 我build议你用404(未find)或403(禁止)回应。 这是你作为作业集成的一个片段。 使用httpd -S
获得一个非常有用的总结,哪些网站是在你当前的configuration中定义的(不是running-config,而是现在的configuration文件),并且注意顺序很重要(另一个原因是我把它全部放在conf中。 d / sites.conf,而不是conf.d / jira.conf和conf.d / confluence.conf等
<VirtualHost _default_:80> RewriteEngine On RewriteRule ^ - [R=404,L] </VirtualHost>
我build议你为conf.d / ssl.conf中的默认https站点做类似的事情
如果希望你发现这个职位有用和信息。
干杯,卡梅隆