fkm blog

software開発に関することを書いていきます

nginx + GoのFastCGI

nginxを前段に, Goでサーバーを書いて, FastCGIで動かしてみた.

GoでFastCGI

net/httpの代わりにnet/http/fcgiを使う.

package main

import (
        "github.com/gorilla/mux"
        "log"
        "net"
        "net/http/fcgi"
)

func main() {
        r := mux.NewRouter()

        l, _ := net.Listen("tcp", ":9000")
        err := fcgi.Serve(l, r)
        if err != nil {
                log.Printf("error : %s", err)
        }
}

nginxの設定

locationのエントリーを作って, ちょっと書くだけ. ポート番号は当然合わせましょう.

location ~ /api/(.*) {
    include            fastcgi.conf;
    fastcgi_pass    127.0.0.1:9000;
}

Go側では/api/*でリクエストが飛んでくる.