详解tomcat各个端口的作用

从tomcat配置文件中,我们可以看出,在启动tomcat的时候默认启动了3个端口,分别是8080(8443)、8009、8005。

8080(8443)端口

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

这个应该是我们最熟悉的一个,平常开发测试也经常用,该Connector用于监听浏览器发送的请求,设置为80后可以直接使用http://localhost访问。

http协议,其中redirectPort表示如果发送的是https请求,就将请求发送到8443端口。

8443是默认的https监听端口,默认是没有开启的,如果要开启由于tomcat不自带证书所以除了取消注释之外,还需要自己生成证书并指定。

8009端口

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

Nginx、Apache等反向代理tomcat时就可以使用ajp协议反向代理到该端口。
虽然我们经常使用http反向代理到8080端口,但由于ajp建立tcp链接后一般长时间保持,从而减少Http反复进行tcp链接和断开的开销,所以反向代理中ajp是比http高效的。

8005端口

<Server port="8005" shutdown="SHUTDOWN">

tomcat监听的关闭端口,就是说这个端口负责监听关闭tomcat的请求。

当执行shutdown.sh关闭tomcat就是链接8005端口执行SHUTDOWN命令;由此,我们直接用telnet向8005端口执行SHUTDOWN来关闭tomcat,这也是比较正统的关闭方式,如果这个端口没被监听,那么sh脚本就是无效的。

实际上,8005和8009端口并不是必须的,尤其SHUTDOWN虽然默认是监听在127.0.0.1,但是连接到这个端口,发送SHUTDOWN就可以无任何验证的把tomcat关闭掉,有安全隐患的。

AJP端口用来与应用服务器交互时候用,比如apache连接tomcat等,开发期间一般也用不着,可以禁止掉。

禁用方式:

AJP端口,直接注释掉server.xml文件的配置行就可以了。

SHUTDOWN端口是写在server参数里面的,直接去掉是不管用的,也是会默认启动,一般在安全设置时候建议把端口修改为其他端口,SHUTDOWN修改为其他复杂的字符串。

实际上这个端口是可以直接屏蔽不监听的。设置时候将其port值修改为-1就可以。

<Server port="-1" shutdown="SHUTDOWN">

server.xml配置文件

<!-- 属性说明
port:指定一个端口,这个端口负责监听关闭Tomcat的请求
shutdown:向以上端口发送的关闭服务器的命令字符串
-->
<Server port="8005" shutdown="SHUTDOWN">

 <Listener className="org.apache.catalina.core.AprLifecycleListener" />
 <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" />
 <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
 <Listener className="org.apache.catalina.storeconfig.StoreConfigLifecycleListener"/>

 <GlobalNamingResources>
 <Environment name="simpleValue" type="java.lang.Integer" value="30"/>
 <Resource name="UserDatabase" auth="Container"
  type="org.apache.catalina.UserDatabase"
  description="User database that can be updated and saved"
  factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
  pathname="conf/tomcat-users.xml" />
 </GlobalNamingResources>

 <Service name="Catalina">
 <!--
  Connector 元素:
  由 Connector 接口定义.<Connector> 元素代表与客户程序实际交互的组件,它负责接收客户请求,以及向客户返回响应结果.

  属性说明:
  port:服务器连接器的端口号,该连接器将在指定端口侦听来自客户端的请求。
  enableLookups:如果为 true,则可以通过调用 request.getRemoteHost() 进行 DNS 查询来得到远程客户端的实际主机名;若为 false 则不进行DNS查询,而是返回其ip地址。
  redirectPort:服务器正在处理http请求时收到了一个SSL传输请求后重定向的端口号。
  acceptCount:当所有可以使用的处理请求的线程都被用光时,可以放到处理队列中的请求数,超过这个数的请求将不予处理,而返回Connection refused错误。
  connectionTimeout:等待超时的时间数(以毫秒为单位)。
  maxThreads:设定在监听端口的线程的最大数目,这个值也决定了服务器可以同时响应客户请求的最大数目.默认值为200。
  protocol:必须设定为AJP/1.3协议。
  address:如果服务器有两个以上IP地址,该属性可以设定端口监听的IP地址,默认情况下,端口会监听服务器上所有IP地址。
  minProcessors:服务器启动时创建的处理请求的线程数,每个请求由一个线程负责。
  maxProcessors:最多可以创建的处理请求的线程数。
  minSpareThreads:最小备用线程 。
  maxSpareThreads:最大备用线程。
  debug:日志等级。
  disableUploadTimeout:禁用上传超时,主要用于大数据上传时。
 -->
 <Connector port="8080" maxHttpHeaderSize="8192"
    maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
    enableLookups="false" redirectPort="8443" acceptCount="100"
    connectionTimeout="20000" disableUploadTimeout="true" />

 <!-- 负责和其他 HTTP 服务器建立连接。在把 Tomcat 与其他 HTTP 服务器集成时就需要用到这个连接器。 -->
 <Connector port="8009"
    enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />

 <!--
  每个Service元素只能有一个Engine元素.元素处理在同一个<Service>中所有<Connector>元素接收到的客户请求
  属性说明:
  name:对应$CATALINA_HOME/config/Catalina 中的 Catalina ;
  defaultHost: 对应Host元素中的name属性,也就是和$CATALINA_HOME/config/Catalina/localhost中的localhost,缺省的处理请求的虚拟主机名,它至少与其中的一个Host元素的name属性值是一样的
  debug:日志等级
 -->
 <Engine name="Catalina" defaultHost="localhost">

  <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
    resourceName="UserDatabase"/>
  <!--
  由 Host 接口定义.一个 Engine 元素可以包含多个<Host>元素.
  每个<Host>的元素定义了一个虚拟主机.它包含了一个或多个Web应用.

  属性说明:
   name:在此例中一直被强调为$CATALINA_HOME/config/Catalina/localhost中的localhost虚拟主机名
   debug:是日志的调试等级
   appBase:默认的应用路径,也就是把应用放在一个目录下,并在autoDeploy为true的情况下,可自动部署应用此路径相对于$CATALINA_HOME/ (web applications的基本目录)
   unpackWARs:设置为true,在Web应用为*.war是,解压此WAR文件. 如果为true,则tomcat会自动将WAR文件解压;否则不解压,直接从WAR文件中运行应用程序.
   autoDeploy:默认为true,表示如果有新的WEB应用放入appBase 并且Tomcat在运行的情况下,自动载入应用
  -->
  <Host name="localhost" appBase="webapps"
   unpackWARs="true" autoDeploy="true"
   xmlValidation="false" xmlNamespaceAware="false">
  <!--
   属性说明:
   path:访问的URI,如:http://localhost/是我的应用的根目录,访问此应用将用:http://localhost/demm进行操作,此元素必须,
    表示此web application的URL的前缀,用来匹配一个Context。请求的URL形式为http://localhost:8080/path/*
   docBase:WEB应用的目录,此目录必须符合Java WEB应用的规范,web application的文件存放路径或者是WAR文件存放路径。
   debug:日志等级
   reloadable:是否在程序有改动时重新载入,设置成true会影响性能,但可自动载入修改后的文件,
    如果为true,则Tomcat将支持热部署,会自动检测web application的/WEB-INF/lib和/WEB-INF/classes目录的变化,
    自动装载新的JSP和Servlet,我们可以在不重起Tomcat的情况下改变web application
  -->
  <Context path="/demm" docBase="E:\\projects\\demm\\WebRoot" debug="0" reloadable="true"></Context>
  </Host>
 </Engine>
 </Service>
</Server>

到此这篇关于详解tomcat各个端口的作用的文章就介绍到这了,更多相关tomcat端口的作用内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 如何修改tomcat默认端口号8080的方法

    1.背景 在默认情况下,tomcat的端口是8080,使用了两个tomcat,那么就需要修改其中的一个的端口号才能使得两个同时工作. 2.方法 2.1改动一 那么,如何修改tomcat的端口号呢?首先到安装目录(或者解压目录)下找到conf文件夹,在里面找到server.xml的文件, 找到 <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redire

  • 在MyEclipse中修改Tomcat 6.x的端口号方法

    在使用MyEclipse进行web开发时,每次访问页面都需要输入8080的端口号, 觉得非常繁琐,就想不输入端口号来访问页面,该怎么办,就把8080的端口号改为80就行了. 在使用MyEclipse自带的Tomcat时,修改时很容易的,只需要在Window--Preferences--MyEclipse--Service-- Integrated Sanbdox--MyEclipse Tomcat 6中修改端口号8080为80就可以了. 这里的MyEclipse Tomcat 6是MyEclip

  • Tomcat显示8080端口被占用的图文解决方法

    大概思路:找到占用端口的进程,通过唯一标识的进程号终止该进程 在控制台中找到端口对应的进程号 在任务管理器中找到服务进程号 然后终止进程 ps:不知道的进程不要乱终止,后果很严重的 win+R-->cmd-->netstat -ao win+R:运行,cmd:打开控制台 netstat-ao:显示活动连接(展示端口号和对应进程号) 在控制台中找到端口对应的进程号 右键任务栏,选择任务管理器 在选项卡中选择详细信息,然后点击PID排序,再找到需要终止的进程号,右键选择结束任务即可 总结 以上所述

  • 详解IDEA 启动tomcat 端口占用原因以及解决方法( 使用debug模式)

    在使用IDEA调试程序的时候,有时候在上一次tomcat关闭未完全的时候,再一次启动debug模式时会出现如下提示 提示我们端口127.0.0.1:3934这个端口被占用,无法debug模式运行程序. 对于还不怎么熟悉使用IDEA的开发而言,会非常奇怪为什么启动tomcat容器运行程序的时候不是使用8080端口,而是用到3934(也可能是其他的端口号). 于是运行cmd系统命令使用netstat -ano查看系统中正在被使用的端口列表,却发现这个端口并不在列表中. 很奇怪的事. 经过研究,发现原

  • 如何在Linux中修改tomcat端口号

    我这里有好几个tomcat,同时使用的话就要给端口号改成不一样的: 1.首先cd进tomcat目录里的conf文件夹,vi打开server.xml配置文件 [root@localhost soft]# ls download redis solrhome tomcat-sina-8081 tomcat-souhu-8082 jdk redis-3.0.0.gem tomcat tomcat-solr zookeeper-3.4.6 [root@localhost soft]# cd tomcat

  • 修改Tomcat服务中的端口配置方法

    1.修改Tomcat服务中的端口配置: 分别修改安装目录下的conf子目录中的server.xml文件(注意:两个文件中对应的端口号要不一样),修改如下 : a.修改Shutdown端口(默认为8005端口),将8005修改为没有在使用的端口号,例如8055. <Server port="8005" shutdown="SHUTDOWN" debug="0"> b.修改http访问端口(默认为8080端口),将8080修改为tomca

  • 详解tomcat各个端口的作用

    从tomcat配置文件中,我们可以看出,在启动tomcat的时候默认启动了3个端口,分别是8080(8443).8009.8005. 8080(8443)端口 <Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> 这个应该是我们最熟悉的一个,平常开发测试也经常用,该Connector用于监听

  • 详解Tomcat双击startup.bat闪退的解决方法

    作为一个刚学习Tomcat的程序猿来说,这是会经常出现的错误. 1.环境变量问题 1.1 首先需要确认java环境是否配置正确,jdk是否安装正确 win+R打开cmd,输入java 或者 javac 出现下图所示就说明jdk配置正确: 如果没有,则参考jdk的安装及配置 如果以上都没有问题,则向下看. 1.2确认Tomcat的环境变量配置 对于免安装版的Tomcat来说,在启动Tomcat时,需要读取环境变量和配置信息,缺少了这些信息,就不能登记环境变量,导致闪退. 解决方法: 1:在已解压的

  • 详解Tomcat常用的过滤器

    一.跨域过滤器CorsFilter org.apcache.catalina.filters.CorsFilter是跨域资源共享规范的一个实现,常常用于前后端分离,静态资源与后端分离等情况.它主要在HttpServletResponse中增加Access-Control-*头,同时保护HTTP响应避免拆分,如果请求无效或者禁止访问,则返回403响应码. 1.1.配置示例 <filter> <filter-name>CorsFilter</filter-name> <

  • 详解Java中@Override的作用

    详解Java中@Override的作用 @Override是伪代码,表示重写(当然不写也可以),不过写上有如下好处: 1.可以当注释用,方便阅读: 2.编译器可以给你验证@Override下面的方法名是否是你父类中所有的,如果没有则报错.例如,你如果没写@Override,而你下面的方法名又写错了,这时你的编译器是可以编译通过的,因为编译器以为这个方法是你的子类中自己增加的方法. 举例:在重写父类的onCreate时,在方法前面加上@Override 系统可以帮你检查方法的正确性. @Overr

  • 详解tomcat热部署和热加载的方法

    详解tomcat热部署和热加载的方法 我在项目开发过程中,经常要改动Java/JSP 文件,但是又不想从新启动服务器(服务器从新启动花时间),想直接获得(debug)结果.有两种方式热部署 和热加载: 1.热加载:在server.xml -> context 属性中 设置 reloadable="true" <Context docBase="xxx" path="/xxx" reloadable="true"/&

  • 详解nginx同一端口监听多个域名和同时监听http与https

    详解nginx同一端口监听多个域名和同时监听http与https 1.同一端口监听多个域名 如今公网ip资源越来越珍贵,多域名监听应用非常广泛,就是用一个端口,比如80或者443,监听多个入口域名.如下: server { listen 443 ssl; server_name xxx.xxx.cn; ssl_certificate ssl/server.pem; ssl_certificate_key ssl/server.key; ...... } 在启用新的域名的时候,只需要另启一个ser

  • 详解Java中hashCode的作用

    详解Java中hashCode的作用 以下是关于HashCode的官方文档定义: hashcode方法返回该对象的哈希码值.支持该方法是为哈希表提供一些优点,例如,java.util.Hashtable 提供的哈希表. hashCode 的常规协定是: 在 Java 应用程序执行期间,在同一对象上多次调用 hashCode 方法时,必须一致地返回相同的整数,前提是对象上 equals 比较中所用的信息没有被修改.从某一应用程序的一次执行到同一应用程序的另一次执行,该整数无需保持一致. 如果根据

  • 详解 Linux 常用目录的作用

     详解 Linux 常用目录的作用 一 常用一级目录 注意: 1.根目录下的bin和sbin,usr目录下的bin和sbin,这四个目录都是用来保存系统命令的. 2.bin目录下的命令时任何用户都能执行,sbin目录下的命令只有超级用户才能执行. 3.media用来挂载光盘,misc挂载磁带机,mnt挂载U盘.它们都是空目录. 4.proc和sys目录不能直接操作,这两个目录保存的是内存挂载点. 5.可以在家目录root或home,以及tmp目录下随便放内容. 二 实战 [root@localh

  • 详解servlet配置load-on-startup的作用

    在servlet的配置当中,<load-on-startup>1</load-on-startup>的含义是:标记容器是否在启动的时候就加载这个servlet. 当值为0或者大于0时,表示容器在应用启动时就加载这个servlet:当是一个负数时或者没有指定时,则指示容器在该servlet被选择时才加载. 正数的值越小,启动该servlet的优先级越高. 如果我们在web.xml中设置了多个servlet的时候,可以使用load-on-startup来指定servlet的加载顺序,服

  • 详解JAVA中static的作用

    1.深度总结 引用一位网友的话,说的非常好,如果别人问你static的作用:如果你说静态修饰 类的属性 和 类的方法 别人认为你是合格的:如果是说 可以构成 静态代码块,那别人认为你还可以: 如果你说可以构成 静态内部类, 那别人认为你不错:如果你说了静态导包,那别人认为你很OK: 那我们就先在这几方面一一对static进行总结:然后说一些模糊的地方,以及一些面试中容易问道的地方: 1)static方法 static方法一般称作静态方法,由于静态方法不依赖于任何对象就可以进行访问,因此对于静态方

随机推荐