从公共网络访问在AWS-EC2上运行的NodeJs应用

时间:2019-04-22 08:16:01

标签: node.js amazon-ec2

启用了EC2入站到all traffic的安全组,仍然无法从公共WAN击中EC2上运行的NodeJs服务器,但是EC2中的'curl'命令起作用。

  1. 创建并登录到EC2实例
  2. 已安装NodeJ,并将简单的服务器代码y绑定到下面
    host/port #
    const ip = "localhost";
    const port = 6999;
  1. 运行服务器并卷曲http://localhost:6999正常工作
  2. EC2 security group,向all traffic, all port等开放的入站流量
  3. 当尝试使用公共DNS URLIP来访问服务器时,它不起作用。

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

经过评论中的讨论后,结果表明您没有在正确的界面上收听。因此,为了使您的node服务器对全世界可见,您需要检查以下内容:

  1. 您的安全组是否允许在该特定端口上输入(我不建议使用all traffic),而最好是允许HTTP输入或您选择的端口。
  2. 检查防火墙是否打开,是否记得打开INPUT链上的入站端口。
  3. 确保您的应用程序侦听外部接口。这意味着,与在127.0.0.1中使用.listen()而不是在"0.0.0.0"中使用 <asp:GridView ID="gvchild" CssClass="gvv" DataKeyNames="AccountID" OnRowDeleting="gvchild_RowDeleting" runat="server" AutoGenerateColumns="false" class="table table-striped" Width="100%"> <Columns> <asp:BoundField DataField="AccountID" ReadOnly="true" HeaderText="Account ID" /> <asp:TemplateField HeaderText="Account Name"> <ItemTemplate> <asp:DropDownList runat="server" ID="ddlaccount" data-index='<%# Container.DataItemIndex %>' > <asp:ListItem Value ="Office Expense">Office Expense</asp:ListItem> <asp:ListItem Value ="Rent">Rent</asp:ListItem> <asp:ListItem Value ="Utilities">Utilities</asp:ListItem> <asp:ListItem Value ="Insurance">Insurance</asp:ListItem> <asp:ListItem Value ="Security">Security</asp:ListItem> </asp:DropDownList> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Sub Account"> <ItemTemplate> <asp:TextBox ID="txtsubaccount" runat="server" data-index='<%# Container.DataItemIndex %>' Text='<%#Eval("SubAccount")%>' Width="475px" /> </ItemTemplate> </asp:TemplateField> <asp:CommandField ButtonType="Button" ShowDeleteButton="true" HeaderText="Delete" /> </Columns> </asp:GridView> <asp:Button ID="Button1" runat="server" Text="Update" OnClick="Button1_Click" style="display:none"/> <asp:HiddenField ID="HiddenField1" runat="server" /> <script> var index; $("#gvchild input[type=text]").change(function () {// record preous row's index index = $(this).data("index"); }) $("#gvchild input[type=text]").focus(function () { // wnen edit the next row if (index !== undefined && $(this).data("index") !=index) { // confirm if (confirm("are you going to update the record, whose row index is " + (index + 1))) { // if return true, pass data to server $("#HiddenField1").val(index); $("[value=Update]").click(); } index = undefined; } }) </script> 一样,这将使您的服务器在服务器上的所有接口上均可用。