Requisitos
- Conocimientos básicos de UNIX.
- FreeBSD x64 con Nginx instalado.
Necesitará varios programas que no se envían con FreeBSD. Ejecute el siguiente comando para instalarlos:
pkg install nano wget git mercurial bzr
Descargue e instale Golang
Descarga golang ejecutando el siguiente conjunto de comandos:
cd /tmp
wget https://storage.googleapis.com/golang/go1.3.3.freebsd-amd64.tar.gz
tar -C /usr/local -xzf go1.3.3.freebsd-amd64.tar.gz
Configurar variables de entorno
Cree una variable llamada GOPATH
(que será la ubicación de los paquetes instalados) y agréguela a su ruta:
mkdir ~/.gopkg
setenv GOPATH /root/.gopkg
set path = ($path /usr/local/go/bin /root/.gopkg/bin)
Si desea tener la ruta establecida en el arranque, ejecute el siguiente comando para agregarlo a su .cshrc
:
echo "setenv GOPATH /root/.gopkg" >> ~/.cshrc
echo "set path = ($path /usr/local/go/bin /root/.gopkg/bin)" >> ~/.cshrc
Verificar instalación
Corre go
en tu terminal. Si se le presenta una lista de opciones, la instalación se realizó correctamente. Ejecute el siguiente comando para instalar un marco web llamado Martini
:
go get github.com/go-martini/martini
Si no ve ningún error, puede continuar con el siguiente paso.
Configurar Martini
Cree un archivo llamado server.go
y complételo con las siguientes líneas de código:
package main
import "github.com/go-martini/martini"
func main() {
m := martini.Classic()
m.Get("/", func() string {
return "Hello from Vultr VPS :)!"
})
m.Run()
}
Cuando termine, guarde y corra go run server.go
. Siempre que no vea ningún error en su terminal, puede continuar con el siguiente paso.
Configurar el proxy inverso de Nginx
Configure Nginx para invertir el proxy al servidor Martini. En /usr/local/etc/nginx/nginx.conf
look para location
y reemplazar su contenido dentro de los corchetes con lo siguiente:
expires 8d;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_read_timeout 5m;
proxy_connect_timeout 5m;
proxy_cache_key sfs$request_uri$scheme;
proxy_pass http://127.0.0.1:3000;
proxy_redirect off;
Una que haya agregado, guardar y ejecutar service nginx restart
o service nginx onerestart
, luego, ejecutar go run server.go
. En su navegador, ingrese http://0.0.0.0
(cambie la IP en consecuencia) y verá una página que dice:
Hello from Vultr VPS :)!
Felicitaciones, ha configurado con éxito un servidor proxy inverso Nginx con Golang + Martini.