Arhn - архитектура программирования

Невозможно получить доступ к серверу Go при размещении на AWS

Я создал проект в Go, используя джин, и он отлично работает локально. Однако когда я попытался развернуть это на экземпляре EC2 на AWS, мне не удалось получить доступ к API на сервере.

Я сделал ssh на размещенной машине и дал запрос на завивку (curl localhost:8080), и он дал правильный ответ. Но любой запрос извне недоступен.

Сервер работает на порту 8080. Я открыл порты в группах безопасности AWS.

Есть ли какие-либо настройки в Go/gin, которые мне нужно сделать, чтобы он был доступен из Интернета?

Образец кода:

package main

import (
    "myConstants"
    "myDatabase"
    "myMiddleware"
    "onboarding"

    "github.com/gin-gonic/gin"
)

func main() {

    var db = myDatabase.DBConnect()

    router := gin.Default()

    router.Use(myMiddleware.RestrictInputContent)
    router.Use(myMiddleware.CheckToken(db))
    router.Use(myMiddleware.RequestLoggerMiddleware())

    router.POST("/signup", onboarding.Signup(db))
    router.POST("/login", onboarding.Login(db))
    router.POST("/logout", onboarding.Logout(db))
    router.GET("/", onboarding.Hello(db))

    defer db.Close()

    //Listen and serve
    router.Run("127.0.0.1:8080")

}

  • Не нужно делать ничего особенного, попробуйте использовать nmap на своем экземпляре EC2, чтобы убедиться, что порт действительно открыт. 26.08.2015
  • Я изменил router.Run с router.Run(127.0.0.1:8080) на router.Run(:8080), и теперь он работает нормально. 26.08.2015
  • Но разве они не означают одно и то же? 26.08.2015
  • № 127.0.0.1 (локальный хост) — это только петлевой интерфейс на машине. Привязка к :8080 означает 0.0.0.0:8080, что означает все интерфейсы. Ваш внешний IP-адрес не 127.0.0.1, а скорее всего IP-адрес на другом интерфейсе (используйте ifconfig для их обнаружения). 26.08.2015
  • Извините, я прочитал это быстро и не увидел 127.0.0.1:8080, который не связывает его с 0.0.0.0:8080, поэтому вы слушаете только по петле. 26.08.2015

Ответы:


1

Поменял роутер. Перекинул с router.Run("127.0.0.1:8080") на router.Run(":8080") и все работает. Как было предложено @elithrar и @user3591723, 127.0.0.1 (локальный хост) — это только петлевой интерфейс на машине. Привязка к «:8080» означает 0.0.0.0:8080, что означает все интерфейсы.

26.08.2015
Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..