如何在Amazon EC2上设置端口转发


16

我有一个在Amazon EC2上运行的Web应用程序。它侦听端口9898。

我可以通过输入IP地址和端口号来访问它。

例如1.2.3.4:9898

但是,我真正想做的就是不必输入端口号。

经过研究,看来端口转发可能是解决方案-即将在默认端口(80)上收到的http请求转发到我的非标准端口(9898)。

这是正确的方法吗?如果是这样,如何在EC2上进行设置?

如果没有,那么我如何实现我想要的?

在此先感谢您的帮助。

更新资料

我应该提到EC2实例是Windows Server 2012 AMI。


您需要在服务器前放置诸如HAProxy之类的东西,以转发请求..或使用iptables。亚马逊不支持端口转发。
弥敦道C版

Answers:


10

无需亲自安装即可完成此操作的最简单方法是将Amazon Elastic Load Balancer放在实例前面。这些允许您按预期转发端口。


我尝试了您的建议,但无法执行ping检查。
ksl 2014年

ceejayoz是正确的ELB就是这样做的方法。使用TCP检查HTTP是否不起作用。抱歉,信誉不足,无法发表评论。
佩斯托耶2014年

嗨,请您详细说明。
ksl 2014年

尝试从ELB地址允许Windows Server防火墙上的ICMP
Tom O'Connor 2014年

默认情况下,防火墙已配置为允许所有ICMP V4通信。
ksl 2014年

6

您有两个选择。

1)设置反向代理,以将HTTP请求(假设它是HTTP)转发到另一个端口。

它应该很简单:安装apache,启用proxy_http模块,输入如下内容:

ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
    Order allow,deny
    Allow from all
</Proxy>
ProxyPass / http://localhost:9898/
ProxyPassReverse / http://localhost:9898/

2)设置IP表以转发数据包


我应该说EC2实例是Windows Server 2012 AMI。我还无法弄清楚Windows的IP表是什么。
ksl 2014年


感谢您的回复。我尝试按照您的建议使用netsh,但无法正常工作。我已将端口80上的http请求转发到EC2实例的公共和私有IP地址。
ksl 2014年

-3

因为我看到了有关使用iptables的评论,所以我将分享在ec2 linux中的经验。我找到了一篇有关转发Node.js端口的出色文章。如果您跳过有关编辑sysctl.conf的说明,则会看到转发说明。我的Linux程序与Ubuntu略有不同。文章是:http : //www.lauradhamilton.com/how-to-set-up-a-nodejs-web-server-on-amazon-ec2

该工作通过ssh完成。我遇到的唯一陷阱是,我预先路由两次,之间没有刷新iptables,直到刷新并重新加载我的Web应用程序才可见。我知道这是一个可怕的形象,对不起。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.