我有一台服务器http://example.com
,它前面有一个名为“https://example.net
执行 SSL 卸载”的负载均衡器,并将流量重定向到其上的端口 443 到 8080 http://example.com
。
服务器example.com
被隔离在虚拟网络中,无法通过互联网访问。负载均衡器example.net
可以访问example.com
互联网,并且公开显示。
如何设置 Apache Tomcat 8 管理器 Web 界面,使其只能从 访问,http://example.com/manager
而不能从 访问https://example.net/manager
?
答案1
我不知道您使用什么负载均衡器,因此无法提供特定的配置,我自己有一个可通过 Nginx 作为代理公开访问的 tomcat 服务器。
Nginx
upstream websites {
server 192.168.x.x:8080 fail_timeout=0;
}
server {
listen 80;
listen 443 ssl;
server_name www.example.com example.com;
location / {
proxy_pass http://websites/;
include proxy_params;
}
#SSL configuration here
}
我还让 Nginx 执行 SSL 终止和压缩,因为这样更容易管理和设置,而且如果我以后想创建负载平衡,我也可以使用 Nginx 来执行此操作,因此没有必要在 Tomcat 中执行此操作。 https://www.digitalocean.com/community/tutorials/how-to-add-the-gzip-module-to-nginx-on-ubuntu-14-04
如果尚不存在,则在 Tomcat server.xml 上为您的网站添加一个新的虚拟主机。
<Host name="www.example.com" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Alias>example.com</Alias>
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="test_example_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
然后在管理器项目的 manager.xml 文件中,您可以设置谁可以访问管理器 HTML 页面,将其设置为您的公共 IP 地址或跳转主机,我记得标准情况下只有本地主机可以连接到 HTML 管理器。
就我个人而言,我已从自己的安装中删除了管理器项目,以避免如果管理不当而出现相关的安全问题,而且我不需要它。
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="192.168.1.*" />
在 tomcat-users.xml 中为管理员设置用户和密码,就可以开始了。
答案2
在 Web 服务器中配置 Proxpass/Porxyalias。您应该在 HTTP(80) 中进行配置,但最佳做法是您可以在受限访问的情况下在 https 中加载