728x90
최근에 사이드 프로젝트에서 사용할 Redis, Database를 구축하는 과정에서 나뿐만 아니라 팀들도 접속이 가능해야 하는 상황이 생겼다. 이전까진 대부분 이런 인프라 도구는 내가 가진 서버 위에 올려두고 내부 네트워크를 이용해 접속하다 보니 다른 팀원들이 접근하기가 어려웠다. 하지만 집에서 운영하고 있는 서버라 외부에 너무 많이 공개하게 되면 내 개인생활이 위험할 수 있어 최대한 노출을 안하려고 했는데 그러다 보니 나만 접근을 하다 보니 팀원들이 개발을 하며 이런저런 확인할 부분이나 테스트를 하기 어려워 문제가 많았는데, 이참에 nginx를 통해서 reverse proxy를 설정했다.
STREAM reverse proxy
이전에도 웹에 대해선 리버스 프록시를 통해 운영하고 있어 큰 문제없이 추가할 수 있을거라 생각했지만, 웹이 아닌 TCP stream 통신을 하기 위한 설정을 하려면 기본 설치되는 NGINX로는 한계가 있었다. 그래서 필요한 옵션을 추가해 새로 컴파일 할 필요가 있다.
NGINX 다운로드
wget https://nginx.org/download/nginx-1.24.0.tar.gz
tar xzvf nginx-1.24.0.tar.gz
cd nginx-1.24.0
Configuration
./configure --prefix=/usr/share/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/var/lib/nginx/tmp/client_body --http-proxy-temp-path=/var/lib/nginx/tmp/proxy --http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi --http-uwsgi-temp-path=/var/lib/nginx/tmp/uwsgi --http-scgi-temp-path=/var/lib/nginx/tmp/scgi --pid-path=/run/nginx.pid --lock-path=/run/lock/subsys/nginx --user=nginx --group=nginx --with-compat --with-debug --with-file-aio --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_degradation_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module=dynamic --with-http_mp4_module --with-http_perl_module=dynamic --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-http_xslt_module=dynamic --with-mail=dynamic --with-mail_ssl_module --with-pcre --with-pcre-jit --with-stream=dynamic --with-stream_ssl_module --with-stream_ssl_preread_module --with-threads --with-http_geoip_module --with-stream
sudo make && sudo make install
Service
# Stop dance for nginx
# =======================
#
# ExecStop sends SIGSTOP (graceful stop) to the nginx process.
# If, after 5s (--retry QUIT/5) nginx is still running, systemd takes control
# and sends SIGTERM (fast shutdown) to the main process.
# After another 5s (TimeoutStopSec=5), and if nginx is alive, systemd sends
# SIGKILL to all the remaining processes in the process group (KillMode=mixed).
#
# nginx signals reference doc:
# http://nginx.org/en/docs/control.html
#
[Unit]
Description=A high performance web server and a reverse proxy server
Documentation=man:nginx(8)
After=network.target nss-lookup.target
[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t -q -g 'daemon on; master_process on;'
ExecStart=/usr/sbin/nginx -g 'daemon on; master_process on;'
ExecReload=/usr/sbin/nginx -g 'daemon on; master_process on;' -s reload
ExecStop=-/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid
TimeoutStopSec=5
KillMode=mixed
[Install]
WantedBy=multi-user.target
sudo systemctl enable nginx.service
sudo systemctl status nginx
sudo systemctl start nginx
nginx.conf
stream {
upstream redis_backend {
server 172.30.1.201:6379; # Redis 서버의 내부 IP 주소와 포트
}
server {
listen 6379;
proxy_pass redis_backend;
}
}
'메모' 카테고리의 다른 글
[8월의 디버깅] 성능 테스트 (0) | 2024.08.14 |
---|---|
[8월의 디버깅] 테스트 코드에서의 MikroORM 영속성 (0) | 2024.08.07 |
틴타임즈 : 뉴스 10초 요약 회고 (0) | 2023.12.29 |
하이버네이트 공식 문서를 읽고 배운 점 (0) | 2023.12.29 |
예외에 대한 새로운 시각에 대한 내 생각 (0) | 2023.12.25 |