在HTTP URL中删除Tomcat端口号

4

我有一个托管在Tomcat上的Web应用程序。我正在尝试实现对我的Web应用程序名称的URL重定向。因此,我正在使用我的XAMPP安装中Apache的vhosts配置。

我使用的工具:Tomcat,XAMPP,APACHE

我所做的更改:

In /System32/drivers/etc/hosts
127.0.0.1 www.myapp.com

此外,我请求获得了一个域名。

nslookup myapp.com
Server: xxx.xx.xxx.xxx
Address:    xxx.xx.xxx.xxx#53

myapp.com   canonical name = blah-blah-myapp.com.
Name:   myapp.com
Address: xxx.xx.xxx.xxx

在Tomcat的server.xml文件中:
     <Connector className="org.apache.catalina.connector.http.HttpConnector"
            connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"
            proxyName="www.myapp.com"
            proxyPort="80"/>

在httpd.conf文件中:
LoadModule proxy_module  modules/mod_proxy.so
#AddModule  mod_proxy.c  # Gave error when tried to follow the docs

ProxyPass         /MyAppPath  http://localhost:8080/MyAppPath
ProxyPassReverse  /MyAppPath  http://localhost:8080/MyAppPath

在 http-vhosts.conf 文件中:
<VirtualHost *:80>
ServerName myapp.com
ServerAlias www.myapp.com
ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
    Order deny,allow
    Allow from all
</Proxy>
ProxyPass /MyAppPath http://localhost:8080
ProxyPassReverse http://localhost:8080

通过进行这些配置,我在我的Macintosh机器上实现了功能。但是,在Windows服务器上出现了问题。我在Windows安装配置文件中进行了相同的更改,但它没有跳过端口号。我的应用程序只能在域名前面加上端口号才能运行。我该如何使 http请求在80端口重定向到tomcat 8080端口
我想要实现的只是像www.myapp.com这样的东西,而不是localhost:8080/index.html。我的应用程序运行在8080端口上。在进行上述配置更改后,我能够通过www.myapp.com:8080访问应用程序。我想要消除url中的8080。

你的Windows机器上是否可以使用任何URL?如果可以,那么是哪些URL?你想让哪些URL起作用?Windows应该允许你启动监听端口80的Apache httpd,因此不需要端口号(主机名之后,而不是之前)。 - Christopher Schultz
2个回答

3
你的问题 http://192.9.200.192:8080/myService/my/BaseService/base 打开
C:\Program Files\Apache Software Foundation\Tomcat 7.0\conf\server.xml
<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

编辑

<Connector port="80" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

如果tomcat服务停止,请从开始菜单中打开配置tomcat,并重新启动服务(stop -> start)。

像这样调用URL:

http://192.9.200.192/myService/my/BaseService/base

问题已解决!


1
你的端口号应该没有问题:Tomcat正在监听8080,Apache httpd正在监听80。如果你想让http://www.myapp.com/访问你的Web应用程序,则需要调整ProxyPass配置:
ProxyPass /MyAppPath http://localhost:8080
ProxyPassReverse http://localhost:8080

那个配置是无效的,因为 ProxyPassReverse 需要两个参数。我想你需要像这样的东西:
ProxyPass / http://localhost:8080
ProxyPassReverse / http://localhost:8080

如果您按照上述步骤操作,一切都会被代理到Tomcat。(在这个阶段,值得问一下自己为什么要使用Apache httpd,因为一切都被代理了)。您还需要在server.xml中的<Connector>中将proxyPort设置为80。
如果您想让/index.html正常工作,并且不显示随之而来的Tomcat“success”页面,则需要将您的Web应用程序从MyAppPath重命名为ROOT(大小写有区别:必须是大写)。只需将Web应用程序的目录重新命名为ROOT或将WAR文件重命名为ROOT.war即可。
如果您只想使用端口80,并且不需要Apache httpd做其他任何事情,那么只需更改Tomcat的server.xml,使端口8080的<Connector>改为使用端口80,并完全删除Apache httpd。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接