2024-05-08(수)

오늘 할 일

	not done
	due on or after 2024-05-08 
	description regex does not match /^$/

2024년 / 05월 / 19주
❮❮ 2024-05-07(화) | 2024-05-08(수) | 2024-05-09(목) ❯❯


Friendship, like love, is destroyed by long absence, though it may be increased by short intermissions.

— Samuel Johnson


nginx 조건문 걸기

오늘 빅 늦잠을 잤다.
머리가 아프더만..

어제 생각한 사항을 다시 정리해보자
요청이 /product/1, /product/1?Target-URL=sdf/product/1로 오게 된다면 그때만 api 서버, 즉 /waiting/enter로 보낸다.
그 외의 사항에 대해서는 전부 /qqueueing-frontend로 보낸다.

어차피 모든 요청은 url주소를 기반으로 한다.
현재 uri 주소는 asdf/waiting/queue-page

gerrit 사용하기

Pasted image 20240508131957.png
내가 원하는 곳으로 정확하게 리뷰 요청을 날리고 싶다면, HEAD:refs/for로 날려야 한다.
그래서 그것을 간단하게 보낼 수 있는 alias를 만들었다.
비번 입력도 자동화하고 싶었는데, 이건 실패.
깃랩이 https만 지원하기 때문이다;
ssh로 받을 수가 없게 돼있어 키를 등록하는 것이 불가능하다.

변동사항

팀원과의 협업 중 서로 이해가 일치하지 않는 부분이 있었다.
나는 프록시패스를 무조건 하나만 거는 상황을 생각했으나, 팀원의 의견에 의하면 리다이렉트를 시킬 때는 엔드포인트를 다르게 보낸다는 것.
그래서 나는 파이썬 스크립트에 수정하기 보다 직접 nginx 설정 파일을 먼저 건드리는 것이 빠르겠다는 판단을 내리고 이를 수정했다.
단순하게 프록시패스를 거는 것은 생각보다 어렵지 않다.

그러고나니 확실히 성공하는 지점이 있었다.
Pasted image 20240508173528.png
이렇게 말이다.
백엔드 팀원의 성공적인 파싱으로 제대로 css도 적용된 것이 확인된다.
그러나.. 위의 큐잉 이미지가 제대로 오지 않는 문제가 발생하고 있다.
Pasted image 20240508173620.png
바로 이런 문제가 발생하고 있는 것이다.
이게 무엇이냐면, js파일에서 추가적인 요청을 보내는데 그러한 요청을 수행하지 못하고 있는 이슈이다.
브라우저가 처음에 받게 되는 파일은 하나의 html이고, 그것에서 필요로 하는 css, js등의 파일들은 주소만 적혀있다.
이 주소들이 프록시패스에 제대로 걸리지 않는 관계로, 나는 이것을 was 서버가 먼저 파일을 받아서 파싱을 하여 프록시 패스에 걸리도록 유도하는 로직을 생각해냈다.
그리고 팀원이 이를 구현해준 덕에 이를 성공시킬 수 있었다.
분명 위의 요청들이 성공한 것을 보면 알 수 있듯이 이 전략은 가능했다.
그러나, 해당 요청들로부터 추가되는 다른 요청들이 있다는 것을 내가 몰랐다.
이것들에 대한 요청들이 실패하고 있는 상황이다.

self.__next_f_push라는 nextjs에서 이뤄지는 요청이 문제인데, 조사하면서 알게 된 사실 중 하나는 사실 성공한 요청들이 재요청되는 로직이 있고, 이 로직들이 문제를 일으킨다는 것이었다.
선 요청을 보내는 로직은 ssr과 연관이 되는 것이라고 하는 것 같다.
아무튼 이후 요청들이 진정으로 의미있는 녀석들인데, 이 친구들은 어떻게 제대로 보낼 수 있을까?

진짜 이런 도전을 하는 게 맞는거냐.. 싶긴 하지만 결국에는 나는 해결사다.
계획을 세웠다면, 그 중간이 아무리 어렵더라도 해내고 만다.
내가 모른다고 포기한다면 진작에 이 직업을 선택하지 않았을 것이다.

Pasted image 20240508195024.png
갑자기 이건 무슨 문제지.
뭐인지 모르겠다.
설마 gerrit을 사용하게 되면서 내가 이용하고 있던 tls 키에 이상이 생긴 것인가?
그럴 가능성이 있다.
CA에서 이 키에 대해서 어떤 식으로 평가를 바꾼 것일 수도 있다.
Pasted image 20240508195800.png
현재 이렇게 블럭을 추가해서 localhost로 오는 요청의 경우 값이 제대로 가게 만들어두었다.
그러나 이렇게 하자 일반적인 진입도 막혀버리는 문제가 발생했다.
그래서 서버 블럭의 위치를 기본 설정 파일의 최하단으로 내렸는데, 이렇게 하니 문제가 해결됐다.
내가 알기로는 nginx는 블럭들의 위치가 지대한 영향을 끼치는데, 실제로 그런 것 같다.

운동을 끝내고 다시 돌아왔는데, 위의 tls 관련 이슈는 사라졌다.
CA 서버 문제였을지도 모르겠다.
다시 상황이 나타나지 않으니 추가적인 테스트가 불가능하다.
그리고 아까는 제대로 동작하지 않았는데, 지금은 localhost와 도메인 이름을 가진 서버 블록이 둘 다 정상적으로 동작한다.
아까 전까지만 해도 한쪽이 되면 한쪽이 되지 않는 이슈가 존재했는데 말이다.

네트워크 모드가 호스트라면

말 그대로이다.
이전에 고민하기로는, 최종적으로 대기열에 진입한 사용자가 받을 페이지를 돌려주는 것은 백엔드이므로 백엔드가 운영자 프론트에 요청할 방안을 만들어두면 되겠다고 생각했다.
Pasted image 20240509005142.png
원래 생각한 방안은 이렇게 nginx 쪽에 설정을 추가해서 local로 보내면 되게 하는 것이었다.
그러나 생각해보니 백엔드는 컨테이너 내부에 있기에 이쪽으로 요청을 보내는 것이 쉽지 않다.
그러다 문득 든 생각이, 애초에 우리 서비스의 네트워크 모드가 host면 어떻게 되나하는 것.
일단 얻는 이점을 생각해보자.

우려되는 사항

오픈비두에서는 자신들의 서비스를 이용하기 위해서 아예 몇몇 포트는 쓰지 말라고 말한다.
지네가 써야 한다, 이것이다.
우리도 그런 노선을 선택해야 하는 것일까.

Pasted image 20240509010453.png
이런 방법도 있다?
Pasted image 20240509011708.png
그러나 그렇게 하더라도, 내부에서 소통하는 것은 여전히 불가능하다.
nginx의 어떤 서버블록을 거치는지 모르겠다.
nginx에서 172.17.0.1로 요청이 올 때 처리하는 코드를 넣었는데 제대로 동작하지 않는 모양이다.
그런데 이건 왜 이렇게 되는지 모르겠다.
어떤 상황이길래 요청이 돌아오지 않는 것일까?
신기한 것은..
Pasted image 20240509014554.png
이건 또 받아온다는 것이다.
Pasted image 20240509014618.png
이건 또 아무 값도 없이 온다.
이건 host 환경에서도 마찬가지인 것을 확인했고, 그게 옳은 동작이라 생각된다.
그럼 어떻게 해야 저렇게 돌아오지 않는 동작 상태를 만들 수 있는 거지?