Linux系统下Tomcat使用80端口的方法

应用场景

很多情况下,我们在linux服务器上安装了tomcat或者nginx之类的软件.

当我们想用80端口的时候,如果不用root用户启动就会报错.

这是因为,对于linux系统而言,1024以下的端口,普通用户是无法使用的.

网上关于这方面的解决方案有两种,一种呢就是什么给文件root权限.

还有一种就是做端口的跳转.我觉得可能端口跳转可能比较安全吧.就着重介绍一下怎么配置.

IPTABLES

在这里我们主要做的是本机的端口跳转,我主要说下如何设置以及删除.

关于iptables的详细信息,可以参考网上很多资料.

添加一个端口的映射

现在我们要做一件事情,假设我们的linux上安装了tomcat.默认访问端口是8080.

现在我想做到当用户访问80端口的时候就能访问到tomcat了.

只需要在root用户下执行命令

iptables -t nat -A PREROUTING -p tcp –dport 80 -j REDIRECT –to-port 8080

-t nat : 指出我要操作什么表.(不写就表示filter.默认是filter)

-A PREROUTING : A 添加的意思.表示我要在PREROUTING 中添加一个规则

–dport 80 : 如果请求80端口.

–to-port 8080 : 那么就转到8080端口.

测试如下 :

如何删除规则

从上面我们可以看出,我们是在 nat表的PREROUTING 中添加的规则.

所以我们就要去nat表的PREROUTING 中删除这个规则.

iptables -t nat -L -nv --line-numbers 

这个命令的作用是,列出nat表中的规则,并且给个num.

然后我们就可以利用这个id删除这个规则了.

如果你不写-t nat 那么默认查找的就是filter表.那么就无法查找规则.

利用这个语句就可以删除这个规则了.

-t nat : 表示我要操作这个表,不指明就是filter.

-D : 表示执行删除操作

PREROUTING : 表示nat表中哪一个链. 后面数字1 就是上图中的num

总结

我做了下面几个实验,nginx占用80端口.tomcat占用8080端口.

开启nginx,tomcat

1. 如果开启了转跳,那么就访问不到nginx了.因为访问80端口的时候一下跳到8080端口去了.

2 关闭端口跳转,就能访问到nginx了.

3 从上可以看出,端口跳转不会占用端口.

4 如果添加规则访问没有达到想要的效果,清楚浏览器缓存就可以了.

5 以上所有操作重启以后全部消失.如果要保留操作,请执行 service iptables restart

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。

(0)

相关推荐

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

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

  • Jsp和PHP共用80端口整合Apache和Tomcat(访问时无需加端口号)

    目的: 整合Apache和Tomcat,使得Java工程和PHP工程都能共用80端口,访问网站时,无需在地址栏中加端口号. 环境说明: Linux CentOS 32位 Apache 2.2.2 Tomcat 7.0.37 准备工作: 下载mod_jk.so http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/ 打开链接找到合适的文件下载,下载后改名为mod_jk.so 修改Apache相关文件 1.将mod_j

  • IIS Tomcat共享80端口的解决方案

    为什么有这种需求,原因是这样的,公司有一个Java的web项目,在另一台服务器A上,最近老板一时兴起,想把他合并到这台稳定点的服务器B上,服务器B上使用IIS来寄宿asp.net 网站,怎么办呢,硬着头皮上吧,在网上找各种解决方案: 解决方案一:isapi_redirect 这个方法按照方法试了N次就是没搞定, 解决方案二:IIS反向代理 基本逻辑就是请求来到IIS,IIS根据路由规则把请求转发给Tomcat处理,然后tomcat把响应返回给IIS, 这个方案依然只是IIS独占端口80,看起来的

  • 完美解决在eclipse上部署Tomcat时出现8080等端口被占用的问题

    问题描述: 在eclipse中部署Tomcat时,出现如下错误. 解决方法如下: 方法一: 1.开始->cmd->输入命令netstat -ano出现下图所示(注意下边显示有些错位,最后一列是PID): 2.有的同学输入netstat -ano后显示不是内部文件,解决方法如下: 开始->cmd->cd: c\WINDOWS\system32\ 结果如上图所示. 3.打开Windows任务管理器,点击查看,点击选择列,勾起PID选项,如下图所示: 4.由于自己机子上的8080端口处于

  • Tomcat 启动错误(8080端口被占用)处理方法

    错误描述: 2009-7-12 15:40:35 org.apache.coyote.http11.Http11BaseProtocol start 严重: Error starting endpoint java.net.BindException: Address already in use: JVM_Bind:8080 at org.apache.tomcat.util.net.PoolTcpEndpoint.initEndpoint(PoolTcpEndpoint.java:298)

  • 详解nginx 配置多个tomcat共用80端口

    场景:项目1放在tomcat1中,项目2放在tomcat2中,两个tomcat放在同一台服务器上,需要共享80端口访问 注意:这里和集群部署是不同的,集群部署是一个项目放在多个tomcat中. 这里通过nginx做反向代理,nginx请到http://nginx.org/en/download.html自行下载, 修改conf/nginx.conf中的server如下: server { listen 80; server_name 192.168.1.197; #charset koi8-r;

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

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

  • java中tomcat的80端口被占用问题解决

    今天遇见了这个端口被占用问题 然后各种百度 先是说 用命令 netstat -a -n -o 最后一个选项表示连接所在进程id. 找到8080端口的PID然后打开任务管理器, 切换到进程选项卡, 在菜单栏选择查看->选择列, 选择PID. 在列表中找到PID对应的进程就可以了然后发现占用端口的进程的PID为4 可无奈如何关闭都关闭不了这个进程 于是又百度了pid为4的进程 果然找到同样问题 解决办法是把world wide web publishing service这个服务关闭就没事了.pid

  • 详解Tomcat多域名配置(多个项目共用80端口)

    今天在做项目时,需要用已申请好的三个二级域名(公司不可能每个项目都申请一个顶级域名,所以这里解析的三个二级域名),分别配置到三个项目,网上搜了一堆,感觉看的不明不白,故在此记录下. 总体步骤是:申请域名>>配置tomcat>>域名绑定IP. 这里主要说明配置Tomcat(我的服务器是windows,lilux下同理修改): 首先保证三个项目正常部署在同一个tomcat里,默认端口号是都是80,这时候访问的url均为http://IP地址/各自项目名/XXX,如下图 然后修改tomc

  • 64位Windows2008系统下IIS7和Tomcat7整合共用80端口如何解决

     加一点自己的东西: 从没有接触过服务器的小白在几天之内要完成windows服务器与linux服务器的配置,当时真的非常紧张.我们的服务器上面有其他的项目占用了80端口,如果需要绑定域名能够让在微信中访问不提示危险网站必须使用80端口(访问80端口是不需要输入端口号的 比如一般测试是使用的8080端口访问时需要输入 http://域名:8080/项目名 使用80端口则为http://域名/项目名  具体的项目和写法看自己的设定 此处只说明端口的问题).更让人无语的是服务器上另一个项目不是java

随机推荐