U2647's blog 一个热爱学习的 Java 程序员,喜欢 Vue,喜欢深度学习 Dubbo Flutter SpringBoot Debug Notes Java LeetCode Python Redis Android DesignPattern mdi-home-outline 首页 mdi-cloud-outline 标签云 mdi-timeline-text-outline 时间轴 mdi-draw-pen 文章总数 62
外网访问Ubuntu下的Tomcat 外网访问Ubuntu下的Tomcat 外网 Ubuntu Tomcat 配置 mdi-cursor-default-click-outline 点击量 62

搞了两天终于可以了。需要修改三处地方,就可以实现外网访问了。

注意:需要保证你的服务器不是通过路由器连的网络,如果是的话需要对路由器做转发配置。

1. 修改tomcat目录下的/conf/server.xml文件

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

将port字段修改为一个开放端口,你也可以改成80,这样在访问时就不用加端口号了,但是要记得开放80端口。这里我没有做修改。

一定要确保该端口是开放的。

2. 修改tomcat/conf/server.xml文件

  <Engine name="Catalina" defaultHost="localhost">


  <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">

将localhost改为你的IP地址,ubuntu下可以使用ifconfig

如果你的IP是路由器分配的话,需要对路由器做转发配置

3.最重要的一点!

百度到的大部分答案基本上到上面一步就结束了。如果你也这么幸运的成功了的话,这一步就没必要了。不过我的是没有成功。去stacoverflow上搜了一下。不成功的原因说是因为JVM没有监听IPv4的地址,所以无法访问。所以需要再修改下面两处。

修改tomcat目录下的/bin/catalina.sh文件和startup.sh。添加下面一句。

JAVA_OPTS= $JAVA_OPTS -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses

我的加上这两句已经可以访问了

如果你的服务器系统是windows的话需要修改.bat的这两个文件

4. 如果还是不能访问

如果上面的你都配置好了,而且还不能访问的话,恰好你的服务器系统是Ubuntu的话,可以尝试下面的方法。
安装authbind。

apt-get install authbind

修改/etc/default/tomcat7文件。

修改为

AUTHBIND=yes

重启后再不能访问的话,就试试你能不能上网,或者是不是用了路由器而且没有做转发配置,或者是端口没有开放。

5.阿里云ubuntu镜像80端口无法访问

阿里云服务器的ubuntu镜像默认情况是只有root用户才能访问1024以下的端口,所以如果这些都配置好了还不能访问的话,建议你用root用户启动tomcat,或者更改端口。再(我)或(不)者(会)添加路由规则将80端口转发到其他端口

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
我的GitHub 我的LeetCode 我的掘金
Powered by Hexo Powered by three-cards
Copyright © 2017 - {{ new Date().getFullYear() }} 某ICP备xxxxxxxx号