我有一个在 Amazon EC2 上运行的 Web 应用程序。它监听端口 9898。
我可以通过输入IP地址和端口号来访问它。
例如 1.2.3.4:9898
然而,我真正希望的是不必输入端口号。
研究这个问题后,看起来端口转发可能是解决方案 - 即将默认端口(80)上收到的 http 请求转发到我的非标准端口(9898)。
这是正确的做法吗?如果是这样,我该如何在 EC2 上进行设置?
如果没有,那么我该如何实现我的目标?
在此先感谢您的帮助。
更新
我应该提到 EC2 实例是 Windows Server 2012 AMI。
答案1
最简单的方法就是在实例前面放置一个 Amazon Elastic Load Balancer,这样你就可以根据自己的需要转发端口。
答案2
您有两个选择。
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 表。
答案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,我的网络应用程序直到我刷新并重新加载后才可见。我知道这是一个糟糕的结局,抱歉。