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/
目录
相关文章
|
18天前
|
Go
go语言中的数据类型
go语言中的数据类型
13 0
|
5天前
|
数据采集 存储 Go
使用Go语言和chromedp库下载Instagram图片:简易指南
Go语言爬虫示例使用chromedp库下载Instagram图片,关键步骤包括设置代理IP、创建带代理的浏览器上下文及执行任务,如导航至用户页面、截图并存储图片。代码中新增`analyzeAndStoreImage`函数对图片进行分析和分类后存储。注意Instagram的反爬策略可能需要代码适时调整。
使用Go语言和chromedp库下载Instagram图片:简易指南
|
1天前
|
程序员 Go
Golang深入浅出之-Select语句在Go并发编程中的应用
【4月更文挑战第23天】Go语言中的`select`语句是并发编程的关键,用于协调多个通道的读写。它会阻塞直到某个通道操作可行,执行对应的代码块。常见问题包括忘记初始化通道、死锁和忽视`default`分支。要解决这些问题,需确保通道初始化、避免死锁并添加`default`分支以处理无数据可用的情况。理解并妥善处理这些问题能帮助编写更高效、健壮的并发程序。结合使用`context.Context`和定时器等工具,可提升`select`的灵活性和可控性。
9 2
|
2天前
|
安全 Go 开发者
Golang深入浅出之-Go语言并发编程面试:Goroutine简介与创建
【4月更文挑战第22天】Go语言的Goroutine是其并发模型的核心,是一种轻量级线程,能低成本创建和销毁,支持并发和并行执行。创建Goroutine使用`go`关键字,如`go sayHello("Alice")`。常见问题包括忘记使用`go`关键字、不正确处理通道同步和关闭、以及Goroutine泄漏。解决方法包括确保使用`go`启动函数、在发送完数据后关闭通道、设置Goroutine退出条件。理解并掌握这些能帮助开发者编写高效、安全的并发程序。
10 1
|
2天前
|
人工智能 Go 调度
掌握Go并发:Go语言并发编程深度解析
掌握Go并发:Go语言并发编程深度解析
|
2天前
|
SQL 关系型数据库 MySQL
Golang数据库编程详解 | 深入浅出Go语言原生数据库编程
Golang数据库编程详解 | 深入浅出Go语言原生数据库编程
|
2天前
|
JavaScript 前端开发 应用服务中间件
angular引入包、路由权限配置、打包问题与nginx配置问题(简单部署)
angular引入包、路由权限配置、打包问题与nginx配置问题(简单部署)
9 0
|
3天前
|
Go 开发者
Golang深入浅出之-Go语言流程控制:if、switch、for循环详解
【4月更文挑战第21天】本文介绍了Go语言中的流程控制语句,包括`if`、`switch`和`for`循环。`if`语句支持简洁的语法和初始化语句,但需注意比较运算符的使用。`switch`语句提供多分支匹配,可省略`break`,同时支持不带表达式的形式。`for`循环有多种形式,如基本循环和`for-range`遍历,遍历时修改原集合可能导致未定义行为。理解并避免易错点能提高代码质量和稳定性。通过实践代码示例,可以更好地掌握Go语言的流程控制。
11 3
Golang深入浅出之-Go语言流程控制:if、switch、for循环详解
|
3天前
|
Go
Golang深入浅出之-Go语言函数基础:定义、调用与多返回值
【4月更文挑战第21天】Go语言函数是代码组织的基本单元,用于封装可重用逻辑。本文介绍了函数定义(包括基本形式、命名、参数列表和多返回值)、调用以及匿名函数与闭包。在函数定义时,注意参数命名和注释,避免参数顺序混淆。在调用时,要检查并处理多返回值中的错误。理解闭包原理,小心处理外部变量引用,以提升代码质量和可维护性。通过实践和示例,能更好地掌握Go语言函数。
17 1
Golang深入浅出之-Go语言函数基础:定义、调用与多返回值
|
3天前
|
测试技术 Linux Docker
【好玩的经典游戏】Docker部署FC-web游戏模拟器
【好玩的经典游戏】Docker部署FC-web游戏模拟器
28 1