본문 바로가기
Programming/Golang

go웹앱을 NginX와 연동하기(windows)

by Wilkyway 2020. 4. 29.
반응형

아직 웹앱 / 웹서버 / API 이런 개념이 없긴 하지만, 회사의 웹 환경은 뭔가 기초가 되는 웹서버가 있고 앱들이 그 위에서 돌아가고 있기 때문에, 오늘은 go 웹앱과 nginx를 연동하는 방법에 대해 알아볼까 합니다.

 

1. go 앱 작성

아래와 같이 간단한 코드를 작성하고 빌드해서 exe파일을 만들어 줍니다.

// main.go
package main

import (
	"fmt"
	"net/http"
)

func main() {
	http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
		fmt.Fprintf(w, "Hello World")
	})

	http.HandleFunc("/greet/", func(w http.ResponseWriter, r *http.Request) {
		name := r.URL.Path[len("/greet/"):]
		fmt.Fprintf(w, "Hello %s\n", name)
	})

	http.ListenAndServe(":9990", nil)

}

그리고 exe파일을 실행해줍니다. 브라우저로 포트 9990에 접속하면 아래와 같이 나옵니다.

간단하게 웹앱이 만들어졌습니다.

 

2. NginX 설치

저는 NginX 사이트를 들어갔었는데, 다운받는 경로를 찾기가 힘들더군요. 다운로드로 검색해서 들어갔습니다. 참고로 이곳 링크를 따라가시면 됩니다. 압축 파일이 다운받아지는데, 설치하는 프로그램이 아니고 곧바로 실행가능한 파일입니다. 따라서 "C:\" 나 "C:\Program Files\" 등 적당한 곳에 옮겨줍니다.

 

 

3. NginX 실행

저는 C:\ 바로 밑에 설치했는데요, 해당 폴더의 nginx.exe 파일을 실행하시면 nginx 서버가 실행됩니다.

그리고 브라우저를 통해서 localhost에 접속하면

nginx에 온걸 환영한다고...이렇게 나옵니다.

 

4. nginx.conf 파일 수정 및 재실행

nginx 설치 폴더의 conf폴더 내 nginx.conf 파일을 수정하여 server 부분에 아래의 코드만 남기고 제거합니다. 이렇게 해서 localhost:80으로 접근하면 자동으로 localhost:9990으로 연결되도록 합니다.

 server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            proxy_pass http://127.0.0.1:9990;  # 변경된 부분
            #root   html;
            #index  index.html index.htm;
        }

        #error_page  404              /404.html;

그리고 커맨드창에서(path 추가 안했다면, 설치폴더 경로로 이동) nginx -s reload 명령으로 재시작합니다.

 

5. localhost 확인

이번엔 localhost:80으로 다시 접속합니다. 그러면 go로 만든 앱의 결과물이 나타나는 것을 확인할 수 있습니다.

6. 기타

아래 ubuntu환경에서 go 웹앱을 nginx와 연동하는 방법에 대한 포스팅을 참조했습니다만, 그 중 systemd unit file 작성하는 부분을 누락했습니다. 왜하는지도 모르겠고, 어떻게 하는지도 모르겠네요. 아시는 분께서는 댓글 부탁드려요. 사실 이것 뿐만 아니라, 애초에 그냥 go 웹앱만 여러개 만들어서 돌리면 되는것 아닌가요? 굳이 apache나 nginx같은 웹서버랑 연동을 해야하는 걸까요? 취미로 혼자 공부하다보니 힘드네요. 누가 좀 알려주세요~~^^;;;;;

 

참고사이트

https://www.digitalocean.com/community/tutorials/how-to-deploy-a-go-web-application-using-nginx-on-ubuntu-18-04

반응형

댓글