golang的gin框架如果前面有代理 获取真实ip的说明
Nginx GO
gin中获取IP有两个方法:gin.RemoteIp()他是从 Request.RemoteAddr 中获取ip,如果没有代理的话,是没有啥问题的gin.ClientIP()他是从 header 中获取 ip,默认是 (defaulting to [X-Forwarded-For, X-Real-Ip]).如果报头不符合语法,或者远端IP不对应一个受信任的代理,则返回远端IP(来自Request.RemoteAddr)。 有代理时其实不管哪种情况,用第二种方法就行了。有代理时,记得设置 nginx 的 下面proxy_set_header X-Real-IP&n... ...
阅读全文
Docker 部署Go的两种基础镜像 busybox不行
Docker GO
刚开始用 busybox,启动了,但是运行时有空指针的情况,最后发现是镜像的问题。推荐下面两个镜像一、 golang:latest 基础镜像mkdir gotest
touch main.go
touch Dockerfile1. 实例代码package main
import (
"fmt"
"log"
 ... ...
阅读全文
gin 框架 接收 json bool 为 false 时候的怪问题
GO
gin 框架设置一个 struct 一个字段为 bool 为必传参数。前端请求时传送这个字段:当bool 为 true 时正常当 bool 为 false 时候,后端没有检测到它,提示 failed on the 'required' tag",问题后端分不清:到底是没传这个参数,还是这个参数传了 false 值解释:总结:gin 中 bool 不能使用 binding:"required"(当传值为false 或者不传时报错)有时候不传值,是不想更改,那么这个想法是个悖论走不通因为在 go 中主要 struct 字段必须有值(零值or设定值)... ...
阅读全文