我有Groovy部署在Tomcat / Apache(CentOS)上的Grails应用程序。 目前,它通过像http://www.domain.com:8080/AppName这样的URL来访问 。 我想通过http://www.domain.com访问它。
我如何去做这件事?
我假设你正试图将http://www.domain.com:8080/AppName移到http://www.domain.com/而没有结尾的 AppName 。 在这种情况下,您可能需要考虑在Tomcat前面运行反向代理。 仅仅将端口从8080端口切换到80端口仍然需要您通过http://www.domain.com/AppName访问您的应用程序。
Apache可以configuration为执行此操作。 你只需要用下面的configuration设置mod_proxy :
ProxyPass / http://localhost:8080/AppName/ ProxyPassReverse / http://localhost:8080/AppName/
你也可以用其他的networking服务器(如lighttpd或nginx)来做到这一点,什么不是,基本上大多数反向代理可以以这种或那种forms做到这一点。
设置您的服务器以侦听端口80。
规范是,如果URI上没有端口号,则默认为端口80。
我有一个作为80端口运行的Tomcat应用程序,我担心Tomcat将以root身份运行(由于端口80)。 此外,我不能确定应用程序的安全性。 所以我决定进行必要的更改,将其作为另一个无权端口运行。 我的问题是保持URI简单。 我在网上find了我需要做的几个步骤,而且我在一个Linux系统上。
首先,redirect端口80到端口8080(我指定的替代)。 您可以通过激活iptables,并使用以下简单指令轻松完成此操作:
iptables -t nat -A OUTPUT -d localhost -p tcp --dport 80 -j REDIRECT --to-ports 8080 iptables -t nat -A OUTPUT -d your_hostname -p tcp --dport 80 -j REDIRECT --to-ports 8080 iptables -t nat -A PREROUTING -d your_hostname -p tcp --dport 80 -j REDIRECT --to-ports 8080
我相信,当我configuration这个时,我用我的IP地址代替了localhost和your_hostname。
然后,您需要对Tomcatconfiguration文件进行一些更改:(1)将连接器端口更改为8080(本例),将代理端口更改为80.然后可以以非root用户身份运行tomcat,简单的URI,大家都很开心。 对不起,我不记得在这里改变特定的XML文件。
我为此尝试了太多的解决scheme:
首先,我在一个nginx web服务器后面的tomcat服务器作为反向代理,但是我遇到了共享会话的问题,而且我正在研究这个解决scheme。
其次,我保存的是一个内核空间端口转发。
默认的http端口是80,除非你在URL中指定了80以外的端口,否则浏览器将尝试连接到端口80.这只是http的工作方式。
解决方法是重新configuration您的Web服务器运行在80端口而不是8080端口。当然,您需要先检查端口80上是否还有一个站点,如果您的选项将受到限制。
如果您的客户端从您的子网外部访问站点,并通过路由器/防火墙types的设备,则可以configuration将外部端口80转发到内部端口8080。
这样,你可以提供给外部客户看起来像一个正常的应用程序,并在内部,你可以看到现实。
这对于类似的东西也是有用的
app1.domain.com app2.domain.com
在不同的端口上转发到内部相同的服务器。