Дано:
Golang в системе установлен, команда usr/local/go/bin/hello возвращает Hello world!
Nginx открывает стандартную заглушку Welcome to nginx!
Открываю etc/nginx/sites-enabled/default
Меняю root /var/www/html; на root /usr/local/go/bin/hello;
Ответ Welcome to nginx! пропадает, теперь вместо него 404 Not Found.
Директории cd usr/local/go/bin/hello не существует т.к. hello это файл в директории go/bin
Вы совершенно неправильно готовите го. Вы пытаетесь делать это в стиле CGI.
Нужно же поднимать в го http сервер, с помощью пакета net/http или какого-нибудь фреймворка на ваш вкус и перенаправлять на него запросы с Nginx через proxy-pass.
Ок, есть простейший http-сервер типа https://pastebin.com/XAx11esh я его так же устанавливаю и становится он доступен как hello, только по адресу usr/local/go/bin/http например как в этом случае правильно отправить на него запросы?
Из вашего ответа я понял что для го http сервер нужен в любом случае? Даже когда на фронте nginx стоит и го вроде бы не надо самому слушать 80й порт?
4utka_pyan,
Вы можете взаимодействовать с вашим веб-сервером(nginx) через FCGI(CGI), но вам нужно настроить FCGI на nginx. Вы также можете проксировать какие-либо запросы с nginx на поднятый сервер Go, который должен слушать какой-либо сокет.
Го надо слушать порт. Nginx обеспечивает общение с пользователем, отдачу статики и перенаправление запросов на бекенд. На бекенде запущен демон на го, который слушает, например 8080, и отвечает Nginx-у.
В конфиге Nginx просто делаете proxy_pass 127.0.0.1:8080