NginxとGo言語でWebアプリケーションの開発環境を整えたので、構築メモです。
環境はVirtualBox上で動いているCentOS 7になります。Fast CGIを使ってアクセスをNginxで受け取ってGoで処理をさせたいと思います。
http編はこちら
Nginxの設定ファイルを修正
まだNginxをインストールしていない場合はこちらを参考にNginxを導入してください。
まずはNginxを壊しても元に戻せるよう、設定ファイルのバックアップを取っておきます。
$ sudo cp /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.backup
これでconfがおかしくなっても元に戻せるので、やりたい放題できるようになりました。
/etc/nginx/conf.d/default.conf
を次のように修正してやります。
server { listen 80; server_name localhost; location /hoge { fastcgi_pass 127.0.0.1:9000; include /etc/nginx/fastcgi_params; } }
この設定で、http://localhost/hoge以下へリクエストを送ると、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
ちなみに、正しくないconfだとこんな感じのエラーが表示されます。confのセミコロンを抜いてみました。
$ sudo nginx -t nginx: [emerg] unexpected "}" in /etc/nginx/conf.d/default.conf:8 nginx: configuration file /etc/nginx/nginx.conf test failed
設定ファイルを再読み込みさせるために、Nginxを再起動します。
$ sudo systemctl restart nginx
Goのプログラムを作成
まだGoの開発環境を整えていない場合は、こちらを参考に環境構築をしてください。
先ほど設定した9000番ポートへのアクセスしたら、Hello World!!
と出力するプログラムを作成します。
package main import ( "fmt" "net" "net/http" "net/http/fcgi" ) func handler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello World!!") } func main() { l, _ := net.Listen("tcp", "127.0.0.1:9000") http.HandleFunc("/", handler) fcgi.Serve(l, nil) }
あとはこいつを実行して、http://localhost/hoge以下にアクセスすると、Hello World!!
が返ってきます。
# サーバ上で動作確認 $ curl http://localhost/hoge Hello World!!
ブラウザ経由でアクセスしても、Hello World!!
が表示されることが確認できるかと思います。
(VirutualBoxのポートフォワーディング機能を使用しているため、8080ポートのアクセスがCentOSの80ポートへ転送される設定になっています。)
参考:
コメント