删除http URL中的tomcat端口号

Posted

技术标签:

【中文标题】删除http URL中的tomcat端口号【英文标题】:Remove tomcat port number in the http URL 【发布时间】:2013-12-27 06:36:59 【问题描述】:

我有一个托管在 tomcat 上的 web 应用程序。我正在尝试实现我的 webappname 的 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 request on port 80 to redirect to tomcat port 8080

我正在寻找的只是实现类似 www.myapp.com 而不是 localhost:8080/index.html 的东西。我的应用程序在端口 8080 上运行。上述配置更改后,我可以通过 www.myapp.com:8080 访问应用程序。我想从url中去掉8080。

【问题讨论】:

在您的 Windows 机器上是否有任何 URL 可用?如果有,有哪些?您想使用哪些 URL? Windows 应该允许您在端口 80 上启动 Apache httpd 侦听,因此不需要端口号(在主机名之后,而不是之前)。 我正在寻找的只是实现类似 www.myapp.com 而不是 localhost:8080/index.html 的东西。我的应用程序在端口 8080 上运行。上述配置更改后,我可以通过 www.myapp.com:8080 访问应用程序。我想从 url 中去掉 8080。 【参考方案1】:

你的问题

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

打开

C:\Program Files\Apache Software Foundation\Tomcat 7.0\conf\sever.xml

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

编辑

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

如果服务停止条件重新启动它(停止->启动),则从开始菜单打开配置tomcat

像这样调用 URL

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

问题解决了!

【讨论】:

【参考方案2】:

您的端口号应该没问题:Tomcat 正在侦听 8080,而 Apache httpd 正在侦听 80。如果你想让http://www.myapp.com/ 进入你的webapp,那么你必须调整你的ProxyPass 配置:

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

该配置无效,因为ProxyPassReverse 需要两个参数。我想你想要这样的东西:

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

如果您执行上述操作,那么所有内容都将被代理到 Tomcat。 (在这个阶段,值得问问自己为什么要为 Apache httpd 所困扰根本,因为一切都被代理了)。您还需要在server.xml 中的&lt;Connector&gt; 中将proxyPort 设置为80。

如果你想让/index.html 工作,而不是向你显示它附带的Tomcat“成功”页面,那么你需要将你的webapp 从MyAppPath 重命名为ROOT(大小写很重要:它必须大写)。只需将 webapp 的目录重命名为 ROOT 或将 WAR 文件重命名为 ROOT.war 即可。

如果您只想使用端口 80 而不需要 Apache httpd 做其他任何事情,那么只需更改 Tomcat 的 server.xml 以便您的端口 8080 的 &lt;Connector&gt; 改为使用端口 80,然后从完全混合。

【讨论】:

以上是关于删除http URL中的tomcat端口号的主要内容,如果未能解决你的问题,请参考以下文章

Nginx 删除 url 中的端口号 :8080

如何在网站 url 上隐藏我的网站端口号

tomcat作为服务器的端口号多少

tomcat修改端口号

Tomcat的端口号怎么修改?

如何修改tomcat默认端口号(详细步骤)