写点什么

网站开发进阶 (二) 阿里云将 80 端口请求转发到其他端口

  • 2022 年 5 月 01 日
  • 本文字数:1065 字

    阅读完需:约 3 分钟

网站开发进阶(二)阿里云将80端口请求转发到其他端口

一、应用背景

前期租了一台阿里云 ECS,想搭建一个 java Web 程序,环境都搭建好后,将Tomcat端口改为 80 并执行。

./startup.sh
复制代码

发现程序报错端口号冲突问题。


首先想到的是80端口被占用了,但是想绑定域名,还是需要将80端口映射到tomcat才行。

二、问题分析及解决

于是检查占用 80 端口的程序,输入命令:netstat -ano,列出所有端口的情况。在列表中我们观察被占用的端口,比如是 49157,首先找到它。


查看被占用端口对应的PID,输入命令:netstat -aon|findstr "49157",回车,记下最后一位数字,即PID,这里是 2720。


继续输入tasklist|findstr "2720",回车,查看是哪个进程或者程序占用了 2720 端口,结果是:svchost.exe。是一个叫 AliYunDun 的程序将 80 端口占用了。


瞬间自己顿悟到阿里盾并不是将 80 端口给占用了,而是为了保护请求,进行一层防护。是云盾作为client连接了server的 80 端口。并不是bind listen在 server 的 80 端口上。于是就有了下面的解决方法:


解决方案(Linux 环境)

由于 80 端口受到各种保护措施,所以一般程序是无法获取 80 端口使用权的,要想实现不输入端口号直接访问程序,需要将 80 端口的请求转发到 Tomcat 设定的端口上去,也就是默认的 8080 端口。

首先查看服务器网卡及 ip 设置:

很明显eth1为外网网卡。


设置端口号转发规则:

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

保存规则

[root ~]# cd /etc/rc.d/init.d
[root ~]# ./iptables save## iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]
复制代码


通过以上操作,将 80 端口映射到 8080 端口。


注:此处的 80 端口是指提供 web 服务的 TCP 端口 80。

三、Windows NAT 端口映射

Windows 本身命令行支持配置端口映射,条件是已经安装了IPV6,启不启用都无所谓,我在 win7 和 server2008 上是可以的。xp,2003 装了 ipv6 协议也是可以的。


端口映射就是将外网主机 IP 地址的一个端口映射到内网中一台机器,提供相应的服务。当用户访问该 IP 的这个端口时,服务器自动将请求映射到对应局域网内部的机器上。


增加端口映射

将 112.126.72.218 的 80 映射到 112.126.72.218 的 8088 端口

netsh interface portproxy add v4tov4 listenport=80 listenaddress=112.126.72.218 connectport=8088 connectaddress=112.126.72.218
复制代码

删除端口映射

netsh interface portproxy del v4tov4 listenport=80 listenaddress=112.126.72.218
复制代码

查看已存在的端口映射

netsh interface portproxy show v4tov4
复制代码

可以通过命令 netstat -ano|find “80” 查看端口是否已在监听

telnet 112.126.72.218 80 测试端口是否连通.

发布于: 刚刚阅读数: 2
用户头像

No Silver Bullet 2021.07.09 加入

岂曰无衣 与子同袍

评论

发布
暂无评论
网站开发进阶(二)阿里云将80端口请求转发到其他端口_端口转发_No Silver Bullet_InfoQ写作社区