You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改gin run命令启动的Gin应用监听端口?

解决gin run启动端口固定3000的问题

你碰到的是Gin热重载工具(github.com/codegangsta/gin)的特性问题:gin run本质是启动了一个代理服务器(默认监听3000),再把请求转发给你的实际应用进程,控制台显示的Listening on port 3000是这个代理的端口,不是你代码里配置的应用端口。

给你三个可行的解决方法:

方法一:直接修改代理服务器的端口

用GIN_PORT环境变量指定代理监听的端口:

GIN_PORT=8080 gin run main.go

或者用工具自带的--port(旧版本可能要用短参数-p)参数:

gin run --port 8080 main.go
# 旧版本尝试:
gin run -p 8080 main.go

方法二:让代理直接转发到你的应用8080端口

因为你的代码固定监听8080,需要同时告诉gin工具应用的端口和代理的端口:

gin run --port 8080 --appPort 8080 main.go

这样gin的代理会监听8080,直接把请求转发到你应用的8080端口。

方法三:修改代码适配gin的端口传递

gin启动应用时会自动给应用设置PORT环境变量,你可以让代码优先读取这个变量,既保留自己的默认端口配置,又适配gin的热重载机制:

package main

import (
    "github.com/gin-gonic/gin"
    "github.com/someone/something/backend/config"
    "os"
)

func main() {
    app := config.App()
    env := app.Env
    
    // 优先用gin设置的PORT,没有则用配置文件里的PORT
    port := os.Getenv("PORT")
    if port == "" {
        port = env.PORT
    }

    r := gin.Default()
    r.Run(":" + port)
}

修改后用gin run --port 8080 main.go启动,此时gin代理会监听8080,转发到它分配的应用端口,你只需访问8080即可。

内容的提问来源于stack exchange,提问作者Alwaysblue

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 07:52:46