feat: nginx ingress controller forward real ip
This commit is contained in:
23
service/real-ip/Dockerfile
Normal file
23
service/real-ip/Dockerfile
Normal 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
36
service/real-ip/main.go
Normal 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
13
service/real-ip/readme.md
Normal 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:
|
||||
...
|
||||
```
|
Reference in New Issue
Block a user