Nginx + GolangでWebアプリケーション開発 ~http編~

NginxとGo言語でWebアプリケーションの開発環境を整えたので、構築メモです。

環境はVirtualBox上で動いているCentOS 7になります。Nginxでアクセスを受けて、httpでGoに渡してGoで処理をさせたいと思います。

FastCGI編はこちら

Nginxの設定ファイルを修正

まだNginxをインストールしていない方はこちら

何があっても大丈夫なように、まず設定ファイルのバックアップを取っておきます。

$ sudo cp /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.backup2

/etc/nginx/conf.d/default.confを次のように修正します。

server {
    listen       80;
    server_name  localhost;

    location /fuga {
        proxy_pass      http://127.0.0.1:9000;
    }
}

confファイルに間違いがないか確認します。下記のように表示されたら問題ありません。

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

設定ファイルを再読み込みさせるために、Nginxを再起動させます。

$ sudo systemctl restart nginx

Goのプログラムを作成

Goの開発環境を作っていない方はこちら

先ほど設定した9000番ポートへアクセスしたら、Hello World!!!と出力するプログラムを作成します。

package main

import (
        "fmt"
        "net/http"
)

func main() {
        http.HandleFunc("/fuga", handler)
        http.ListenAndServe(":9000", nil)
}

func handler(w http.ResponseWriter, r *http.Request) {
        fmt.Fprint(w, "Hello World!!!")
}

あとはこいつを実行して、http://localhsot/fugaにアクセスすると、Hello World!!!が返ってきます。

# サーバ上から動作確認
$ curl http://localhost/fuga
Hello World!!!

ブラウザ経由でアクセスしてもHello World!!!が表示されることが確認できるかと思います。
(VirutualBoxのポートフォワーディング機能を使用しているため、8080ポートのアクセスがCentOSの80ポートへ転送される設定になっています。)

参考:

コメント