Iris项目需通过Run()或Listen()设置端口、HTTPS、超时及IP绑定;修改路由或中间件无效,不调用二者则服务不启动。

要让 Iris 项目在指定端口运行、启用 HTTPS、设置超时或绑定特定 IP,必须修改启动时传入的参数;直接改路由或中间件代码不会影响监听行为,【不调用 Run() 或 Listen() 就等于没启动服务】。
基础端口监听:从 :8080 换成其他端口
打开 main.go,找到 app.Run() 或 app.Listen() 调用处。
方法一:用 Listen() 快速切换(适用于开发)
把 app.Listen(":8080") 改成 app.Listen(":3000"),端口即刻生效。这一步操作起来很简单,直接替换字符串就行。
方法二:用 Run() 配合 iris.Addr()(v12+ 推荐)
将 app.Run(iris.Addr(":8080")) 中的 ":8080" 替换为 ":8000" 或 ":9001" 等任意可用端口。注意:端口号不能是 0~1023 之间的特权端口(除非用 root 运行),否则启动会报 bind: permission denied。
绑定特定 IP 地址(如只允许内网访问)
默认监听 0.0.0.0,对外暴露所有网卡。若只想让服务响应来自 192.168.1.100 的请求,需显式指定 IP。
第一步:修改 Run 参数,写成 app.Run(iris.Addr("192.168.1.100:8080"))
第二步:确保目标 IP 确实存在于服务器上(执行 ip addr 查看),否则启动失败并报错 listen tcp 192.168.1.100:8080: bind: cannot assign requested address
第三步:防火墙需放行该 IP+端口组合,例如 ufw allow from 192.168.1.100 to any port 8080
这一步不能跳过,否则服务虽启动但无法被指定 IP 访问。
启用 HTTPS 并加载证书文件
HTTPS 启动必须用 ConfigureHost(),Listen() 和普通 Run() 均不支持 TLS 配置。
方法一:使用内置 TLS 辅助函数(推荐)
app.ConfigureHost(func(s *http.Server) { s.TLSConfig = &tls.Config{MinVersion: tls.VersionTLS12} }) → app.Run(iris.TLS("localhost:443", "cert.pem", "key.pem"))
方法二:手动构造 http.Server 实例(适合高级控制)
srv := &http.Server{Addr: ":443", TLSConfig: &tls.Config{GetCertificate: yourCertFunc}} → app.ConfigureHost(func(s *http.Server) { *s = *srv }) → app.Run()
【cert.pem 和 key.pem 必须是 PEM 格式且路径可读,否则进程 panic 并退出】
设置 HTTP 超时与连接限制
通过 Run() 的可选参数传入 iris.Configuration 实例。
app.Run(iris.Addr(":8080"), iris.WithoutServerError(iris.ErrServerClosed), iris.WithReadTimeout(30*time.Second), iris.WithWriteTimeout(60*time.Second))
其中 WithReadTimeout 控制请求头读取上限,WithWriteTimeout 控制响应写出最长时间;若不设,Go 默认无超时,可能被慢连接拖垮。
WithKeepAliveInterval(30 * time.Second) 可主动探测空闲连接,避免 NAT 设备过早断连。


















