Table of Contents
nginx ingress controller 에서 regexp location 지정하는 방법
배경
k8s 에서 nginx ingress controller 의 path 을 지정할 때에 기본적으로는 string match 방식으로 path를 구분한다. 대부분의 경우에는 별 문제가 없지만 특정 요구사항에 따라서 따라서 path 를 식별하는데 regexp 를 적용하고 싶은 경우가 있다. ingress controller 로 동작하는 nginx 의 configuration을 바로 수정하기는 어려우니 ingress controller 에서 지원하는 방식으로 해법을 찾아보았다.
방법
간단히 말해서 다음과 같이 nginx.ingress.kubernetes.io/use-regex
annotation 을 적용하면 된다.
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: test-ingress
annotations:
nginx.ingress.kubernetes.io/use-regex: "true"
annotation 을 지정한 다음에 다음과 같이 path 지정을 했다면
spec:
rules:
- host: test.com
http:
paths:
- path: /foo/.*
backend:
serviceName: test
servicePort: 80
nginx ingress controller 에 적용되는 nginx config 는 다음과 같은 형태가 된다.
location ~* "^/foo/.*" {
...
}
주의사항
주의 할점은 regexp 가 적용된 path 의 경우에 매칭되는 패턴이 여러개라면 첫 번째 일치하는 패턴이 적용된다는 점이다. 패턴을 등록할 때 주의하자.
참고
comments powered by Disqus
FEATURED TAGS
accesscontrol
adaptive-growth
alpine-linux
ansible
ansible-tower
apache2.4
architecture
argocd
asgi
aws
awx
backoffice
beautiful-goodbye
begining-docker
benchmark
blockhound
blocking-code
blog
book
brew-cask
build-cache
collaboration
communication
composer
confluence
cronjob
curl
customizing
customlog
data.sql
database
developer
difference
docker
docker-desktop
dockerize
dos-attack
eks
elasticsearch
empty-string
environment-to-do-well
errorlogformat
event-driven
experience
file-upload
filebeat
fluentd
forwarded-option
framework
fuse.js
golang
graceful-deploy
happy-new-year
haproxy
haproxy-1.8
haproxy-acl-logging
haproxy-custom-variable-logging
haproxy-metric
haproxy-reload-fail
haproxy-stat
heap-memory
hedgehog-sharp
how-do-i-work
hugo
index-alias
install
installation
instance-type
inverted-index
istio
iterm
java
jdk-21
jekyll
jekyll-to-hugo
jetbrains
json
k8s
k8s-api
kmooc
kubernetes
leadership
learning-in-2019
lets-encrypt
letsencrypt
limit_req_zone
litestar
logstash
m1-macbook-pro
macro
macro-key-mapping
mapping
match
match_phrase
maven
microservice-설계-및-구현
migration
mm
multi-datasource
mysql
nginx
nginx-ingress
nginx-regexp
ngram
null
openjdk
partial-matching
phpstorm
poeaa
portfolio-expansion
product-strategy
python
query-dsl
rate-limit
rate-litmiting
rds
reindex
rss-template
seamless-reload
search-on-hugo
service-account-role
sidebar-search
speed-up
speedup
spring
spring-boot
spring-camp
spring-camp-2023
spring-event
ssh
struct
study
system-manager
systemd-reload
template
term
throughput
timezone
tips
traffic-management
ulid
unused-plugins
uuid
ux-consideration
virtual-thread
vm-options
webflux
wildcard
zero-downtime
만들면서-배우는-클린-아키텍처
시작하세요-도커
엔터프라이즈-애플리케이션-아키텍처-패턴
쿠버네티스-시작하기