feat: nginx ingress controller forward real ip

This commit is contained in:
loveuer
2024-07-02 13:39:22 +08:00
parent 4ae56d1726
commit e8cb75b705
6 changed files with 167 additions and 3 deletions

View File

@ -0,0 +1,23 @@
FROM repo.me/external/golang:latest AS builder
WORKDIR /app/build
COPY go.mod .
COPY go.sum .
COPY service/real-ip/main.go .
ENV GOPROXY https://goproxy.io
RUN go mod download && go build -ldflags='-s -w' -o real-ip_app .
FROM repo.me/external/alpine:latest
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apk/repositories && apk add curl
ENV TZ Asia/Shanghai
WORKDIR /app
COPY --from=builder /app/build/real-ip_app .
CMD [ "/app/real-ip_app" ]

36
service/real-ip/main.go Normal file
View File

@ -0,0 +1,36 @@
package main
import (
"flag"
"github.com/loveuer/nf"
"github.com/loveuer/nf/nft/log"
"time"
)
var (
address string
)
func init() {
flag.StringVar(&address, "address", ":80", "listen address")
flag.Parse()
}
func main() {
app := nf.New()
app.Get("/api/real-ip/available", func(c *nf.Ctx) error {
return c.JSON(nf.Map{"status": 200, "data": "available@" + time.Now().Format(time.RFC3339)})
})
app.Get("/api/real-ip/ip", func(c *nf.Ctx) error {
headers := c.Request.Header
return c.JSON(nf.Map{"status": 200, "data": nf.Map{
"ip": c.IP(),
"headers": headers,
}})
})
log.Fatal(app.Run(address).Error())
}

13
service/real-ip/readme.md Normal file
View File

@ -0,0 +1,13 @@
# enable nginx-ingress-controller real-ip forward
### edit nginx-ingress-controller configmap yaml as blow:
```yaml
apiVersion: v1
data:
allow-snippet-annotations: 'true'
use-forwarded-headers: 'true'
kind: ConfigMap
metadata:
...
```