关于阿里云服务器中Tomcat的<Host name="localhost">中的localhost改为外网ip无法访问的问题

本文介绍了解决Tomcat服务器在外网环境下无法被访问的问题。通过调整配置文件中的地址绑定,并在阿里云服务器的安全组中增加相应的规则,最终实现了从外部网络成功访问Tomcat服务。

最近租了个阿里云服务器,然后倒腾了一下,在装好环境测试Tomcat的时候发现,本地用localhost访问没有问题,但是当把Host中的localhost改为外网ip时,再随便用台电脑访问外网ip发现访问不了,然后网上查了一下,都没有解决问题,后面在阿里云官网文档中找到了答案。

网上查到的:

使用cmd命令netstat -n, 查看tomcat地址绑定, 发现是绑定到::1, IPv6
//解决办法
在<Connector port="80" protocol="HTTP/1.1 .../>"中加入address="0.0.0.0"
如下图

这里写图片描述

阿里云官方文档:
https://help.aliyun.com/document_detail/25475.html?spm=5176.2020520101.121.1.60951b65kWTKjR#allowHttp里面的案列6:

在服务器的安全组增加一个安全组规则,如下图:
这里写图片描述

这里写图片描述

这里写图片描述

然后刷新网页,完美解决!

### ### 配置 Tomcat 支持多个 Service 并绑定域名 `yanjie.com` Tomcat 允许通过配置多个 `<Service>` 元素来支持多个服务,每个服务可以监听不同的端口并绑定不同的域名。这种方式适用于在同一台服务器上运行多个独立的 Web 用,同时通过不同的域名访问各自的应用。 #### 配置多个 Service 在 `server.xml` 中,每个 `<Service>` 元素定义一个独立的服务,包含一个 `<Engine>`、一个或多个 `<Connector>` 以及一个或多个 `<Host>`。通过为每个 `<Host>` 设置不同的 `name` 属性,可以实现对不同域名的绑定。例如,若希望将 `yanjie.com` 和 `www.yanjie.com` 指向不同的 Web 应用,可以配置两个 `<Service>`。 ```xml <Server port="8005" shutdown="SHUTDOWN"> <!-- 第一个 Service,绑定 yanjie.com --> <Service name="ServiceYanjie"> <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> <Engine name="YanjieEngine" defaultHost="yanjie.com"> <Realm className="org.apache.catalina.realm.LockOutRealm"> <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase" /> </Realm> <Host name="yanjie.com" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Context path="" docBase="/var/www/yanjie" reloadable="true"/> </Host> </Engine> </Service> <!-- 第二个 Service,绑定 www.yanjie.com --> <Service name="ServiceWwwYanjie"> <Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> <Engine name="WwwYanjieEngine" defaultHost="www.yanjie.com"> <Realm className="org.apache.catalina.realm.LockOutRealm"> <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase" /> </Realm> <Host name="www.yanjie.com" appBase="webapps2" unpackWARs="true" autoDeploy="true"> <Context path="" docBase="/var/www/www.yanjie" reloadable="true"/> </Host> </Engine> </Service> </Server> ``` 上述配置中,第一个 `<Service>` 监听端口 8080,绑定域名 `yanjie.com`,并指向 `/var/www/yanjie` 目录下的 Web 应用;第二个 `<Service>` 监听端口 8081,绑定域名 `www.yanjie.com`,并指向 `/var/www/www.yanjie` 目录下的另一个 Web 应用。这样可以实现多个服务并行运行并绑定不同的域名[^1]。 #### 域名绑定的 Host 配置 在 `<Host>` 元素中,`name` 属性用于指定绑定的域名。Tomcat 会将请求的 `Host` 头与 `<Host>` 的 `name` 进行匹配,只有匹配成功的请求才会被处理。例如: ```xml <Host name="yanjie.com" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Context path="" docBase="/var/www/yanjie" reloadable="true"/> </Host> ``` 该配置表示该 `<Host>` 将响应所有指向 `yanjie.com` 的请求,并将默认应用指向 `/var/www/yanjie` 目录。如果希望支持通配符域名,如 `*.yanjie.com`,可以设置 `name="*.yanjie.com"`,这样 `a.yanjie.com`、`b.yanjie.com` 等子域名也将被匹配[^3]。 --- ###
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值