K
K
Kagtaviy2016-05-29 22:46:10
go
Kagtaviy, 2016-05-29 22:46:10

How to set up ngnix+go?

Hello, I need to deploy an application in golang.
Decided to use ngnix.
Here is the nginx.conf config added to line 43:

server {
    listen       80;
    server_name  MyDomain.ru;
    location / {
        fastcgi_pass  127.0.0.1:9000;
        include       fastcgi_params;
    }
}

I created the /var/app/current/ directory and uploaded my applications there.
Changed main.go:
func main() {
    l, err := net.Listen("tcp", "127.0.0.1:9000")
    if err != nil {
        return
    }
    http.HandleFunc("/", handler)
    fcgi.Serve(l, nil)
}

Then I make a build and run it:
go build index.go
./index &
The launch goes without errors, but on request to MyDomain.ru I get 502 Bad Gateway.
How to solve this problem, thanks in advance!

Answer the question

In order to leave comments, you need to log in

2 answer(s)
A
Alexander Pavlyuk, 2016-05-29
@Kagtaviy

Просто делайте приложение как обычный http-сервер. Через http.ListenAndServe, например. В nginx делаете так:

server {
    listen       80;
    server_name  MyDomain.ru;
    location / {
        proxy_pass http://127.0.0.1:9000;
        proxy_set_header  X-Real-IP         $remote_addr;
    }
}

X-Real-IP нужен, чтобы ваше приложение видело, какой у пользователя айпишник, ибо к приложению всегда будет обращаться nginx. "X-Real-IP" будет одним из заголовков запроса к приложению.

Анатолий, 2016-05-29
@taliban

У вас случайно не стоит php-fpm? он обычно занимает 9000 порт. Если не в этом дело, то просто сделайте запрос руками на 9000 порт и посмотрите а действительно ли го запустился и работает нормально?

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question