일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 요리
- MySQL
- Spring
- Gradle
- java
- tool
- ReactJS
- JVM
- Git
- redis
- jsp
- linux
- springboot
- Web Server
- devops
- ubuntu
- php
- elasticsearch
- Design Patterns
- laravel
- javascript
- IntelliJ
- Spring Boot
- AWS
- Spring Batch
- Oracle
- 맛집
- it
- jenkins
- db
- Today
- Total
목록Infra/Nginx (8)
아무거나
Nginx Keepalive TIME_WAIT 소켓이 쌓이는 근본적인 문제 해결 방법 Ngnix와 웹 애플리케이션 서버(Tomcat + Spring Boot) 간의 요청이므로 TCP Handshake를 한다. 하지만 빈번하게 통신이 발생하면 응답시간에 대한 레이턴시가 발생할 수 있다. 즉, 모든 요청에 TCP Handshake가 발생하므로 불필요한 리소스 낭비가 생기므로 keepalive가 필요함 keepalive란 한번 맺은 세션을 요청이 끝나더라도 유지해주는 기능 -> 매 요청마다 새로운 세션을 만들지 않고, 지정된 숫자만큼의 세션을 연결한 뒤 그 연결을 통해 요청을 처리 설정적용 [/etc/ngnix/nginx.conf] ... map $http_upgrade $connection_upgrade {..
특정 url path에 접근할 때 서버 경로에 있는 파일 불러오기 [nginx.conf] ... server { ... # 해당 http://localhost/upLoadFile/file.jpg 에 접근하면 해당 file.jpg 파일로 접근할 수 있다. location /upLoadFile { alias /home/bkjeon/files; } ... } ...
로드밸런싱 설정 (Nginx의 Upstream 모듈을 통해서 제공) nginx config 파일에서 수정하자. [nginx.conf 또는 default.conf] ... http { upstream myapp { server server1.example.com server server2.example.com } server { listen 80; location / { proxy_pass http://myapp; } } } ...
Sticky Session 관련 로드밸런서 스위칭 문제 Nginx + tomcat 을 하나의 서버에서 통으로 사용하며 각각 총 2개의 서버로 나누어져있고 그 위에 L7 으로 세팅되어있을때 배포를 할 때마다 다운타임이 일어나는 현상이 있다. 먼저 L7은 스위치로 들어온 패킷을 감지하여 가장 적절한 목적지로 전송해주며 불필요한 패킷을 제외시켜주는 역할을 한다. 여기에서 Sticky Session 이라는 것을 사용하게 되는데 Sticky Session 이란 L4 스위치를 통해 분배된 서비스 세션은 하나의 연결 요청에 1 ~ n 중에 한 대의 서버에 분배하게 된다. 그러나 처음에 접속했던 서버와 같은 서버에 계속 연결시킬 수 있다. (일반) 유저A => L4 => 1번 Server 유저B => L4 => 2번 ..
허용 HTTP 요청 크기를 초과할 경우 Nginx에서 해당 사이즈를 설정해주면 됩니다. ( Nginx는 기본 사이즈가 1MB로 설정되어 있습니다. ) 보통 /etc/nginx/nginx.conf에 정의되어있습니다. 아래를 참고하여 설정에 추가하면됩니다. server { ... client_max_body_size 10M; }
Nginx 리버스 프록시를 활용한 정적 리소스 캐시 리버스 프록시란? 정적 자원(static resource) 캐시 proxy.conf 추가 // path: vi /etc/nginx/conf.d/proxy.conf // css, js, gif, png, jpg, jpeg 파일을 전부 캐시한다. (바뀐 파라미터에 따라서 전부 캐시하게 된다.) server { ... location ~* \.(?:css|js|gif|png|jpg|jpeg)$ { proxy_pass http://127.0.0.1:8080; proxy_cache_valid 200 60m; proxy_cache cache_zone; expires 1y; access_log off; add_header X-Proxy-Cache $upstream_..
Nginx Reverse Proxy란 리버스 프록시(reverse proxy) 리버스 프록시는 유저의 요청을 받아서 반대편(reverse) 네트워크에 있는 인터넷 서버에 전달 하는 일을 한다. 리버스 프록시 서버는 단순히 요청을 전달하기만 하므로 요청의 처리는 뒷단에 있는 웹 서버들이 맡아서 한다. 즉, 하나의 리버스 프록시 서버가 여러 웹 서버로 요청을 전달하도록 구성 할 수 있다. (로드 밸런서의 역할을 수행할 수 있음 예를 들어 HAProxy, Nginx, Apache등이 있다.) 일반적으로 웹 서버(nginx)와 웹 애플리케이션 서버(tomcat)를 분리하여 웹 서버를 프록시 서버로 두고 클라이언트의 요청을 캐시하여 동일한 요청이 오면 웹 애플리케이션 서버에 전달하지 않고 웹 서버에 캐시된 내용을..
웹 서버를 운영하면서 기본적인 보안처리에 대해 포스팅합니다. 해당 방법을 무조건 적용하라는건 아닙니다. 상황에 맞게 적용하여 사용하시길 권장드립니다. 확인명령으로 조회 후 확인하셔서 적용하시면 됩니다. [ Ubuntu 기준 ] 1. 관리서버 디렉토리 권한 설정 (일반 사용자가 관리서버 디렉토리에 접근할 경우 홈페이지 변조, 설정 변경 등으로 인한 장애가 발생할 수 있으므로 일반 사용자의 접근 권한을 제한해야 함.) * 명령확인 : ls -ald /etc/nginx/ sudo chown -R ubuntu:ubuntu /etc/nginx/ sudo chmod 750 /etc/nginx/ 2. 설정파일 권한 설정 (일반 사용자가 웹 서버의 설정 파일을 삭제, 변경할 수 있을 경우 시스템이 오작동하여 사용 불능..