Go 语言 Web 应用怎么使用 Nginx 部署?

简介: Go 语言 Web 应用怎么使用 Nginx 部署?

介绍

Golang 标准库 net/http 和 Go 语言 Web 框架,比如 Gin、Beego 和 Iris 等,可以很方便地构建一个 Web 应用。

Nginx 是一个 HTTP 和反向代理服务器、一个邮件代理服务器和一个通用的 TCP/UDP 代理服务器。本文重点不是介绍 Nginx,感兴趣的读者朋友们请自行查阅 Nginx 相关资料了解更多。

为什么我们还需要使用 Nginx 部署 Go 语言开发的 Web 应用呢?

因为我们可以使用 Nginx 提供的反向代理功能,将 Go 语言开发的 Web 应用接入 Nginx,从而将 Nginx 的强大功能赋能到 Go 语言开发的 Web 应用中。

本文我们介绍怎么使用 Nginx 部署一个 Go 语言开发的 Web 应用。

构建一个 Web 应用

首先,我们需要先构建一个 Web 应用,Gin 是一个用 Golang 编写的 HTTP Web 框架。为了方便,我们使用 Gin 框架构建一个 Web 应用。

示例代码:

package main
import "github.com/gin-gonic/gin"
func main() {
 r := gin.Default()
 r.GET("/ping", func(c *gin.Context) {
  c.JSON(200, gin.H{
   "message": "pong",
  })
 })
 r.Run() // 监听并在 0.0.0.0:8080 上启动服务
}

阅读上面这段代码,使用 Gin 框架构建一个监听 8080 端口的 Web 应用。

运行代码,使用浏览器访问 http://YourIP:8080/ping,返回结果是 {"message":"pong"}

03

使用 Nginx 部署

使用终端通过 ssh 方式登录到 Linux 服务器,执行命令 nginx -t,通过输出结果我们可以得到 Nginx 配置文件的路径。

# nginx -t
nginx: the configuration file /usr/local/openresty/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/openresty/nginx/conf/nginx.conf test is successful

根据输出结果可知,Nginx 配置文件的路径是 /usr/local/openresty/nginx/conf/nginx.conf

编辑 Nginx 配置文件:

server {
    listen 8081;
    location / {
        proxy_pass http://127.0.0.1:8080;
    }
}

http{} 块中,新增以上代码,Nginx 监听 8081 端口,访问 Nginx 的 8081 端口,反向代理到监听 8080 端口的 Go 语言开发的 Web 应用,如果读者朋友们有自己的域名,还可以将域名配置到 server{} 块中。

保存并退出 Nginx 配置文件后,执行命令 nginx -t 测试配置文件语法是否有误,没有问题的话,执行命令 nginx -s reload,重新加载配置文件(前提是 Nginx 已启动,如果 Nginx 还未启动,可以执行命令 nginx,启动 Nginx)。

然后,在浏览器访问 http://YourIP:8081/ping,返回结果也是 {"message":"pong"}

04

总结

本文我们介绍怎么使用 Nginx 部署 Go 语言开发的 Web 应用,从而将 Nginx 的强大功能赋能给 Go 语言开发的 Web 应用。

实际上,就是使用 Nginx 的反向代理功能,将 Nginx 监听端口收到的请求转发到 Go 语言开发的 Web 应用监听的端口上。

建议读者朋友们自行操作一遍,从而加深体会。感兴趣的读者朋友们,关于 Gin 框架 和 Nginx 的更多内容,请自行查阅相关资料了解更多。

推荐阅读:

参考资料:

  1. https://gin-gonic.com/docs/
  2. https://nginx.org/en/
目录
相关文章
|
7月前
|
前端开发 JavaScript 开发者
JavaScript:无处不在的Web语言
JavaScript:无处不在的Web语言
|
6月前
|
应用服务中间件 网络安全 nginx
手把手教你使用 Docker 部署 Nginx 教程
本文详解Nginx核心功能与Docker部署优势,涵盖镜像拉取、容器化部署(快速、挂载、Compose)、HTTPS配置及常见问题处理,助力高效搭建稳定Web服务。
2916 4
|
6月前
|
算法 Java Go
【GoGin】(1)上手Go Gin 基于Go语言开发的Web框架,本文介绍了各种路由的配置信息;包含各场景下请求参数的基本传入接收
gin 框架中采用的路优酷是基于httprouter做的是一个高性能的 HTTP 请求路由器,适用于 Go 语言。它的设计目标是提供高效的路由匹配和低内存占用,特别适合需要高性能和简单路由的应用场景。
562 4
|
6月前
|
应用服务中间件 Linux nginx
在虚拟机Docker环境下部署Nginx的步骤。
以上就是在Docker环境下部署Nginx的步骤。需要注意,Docker和Nginix都有很多高级用法和细节需要掌握,以上只是一个基础入门级别的教程。如果你想要更深入地学习和使用它们,请参考官方文档或者其他专业书籍。
319 5
|
6月前
|
存储 安全 Java
【Golang】(4)Go里面的指针如何?函数与方法怎么不一样?带你了解Go不同于其他高级语言的语法
结构体可以存储一组不同类型的数据,是一种符合类型。Go抛弃了类与继承,同时也抛弃了构造方法,刻意弱化了面向对象的功能,Go并非是一个传统OOP的语言,但是Go依旧有着OOP的影子,通过结构体和方法也可以模拟出一个类。
355 2
|
8月前
|
Cloud Native 安全 Java
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
525 1
|
8月前
|
Cloud Native Go API
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
551 0
|
8月前
|
Cloud Native Java Go
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
374 0
|
8月前
|
Cloud Native Java 中间件
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
430 0
|
8月前
|
Cloud Native Java Go
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
478 0
下一篇
开通oss服务