Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 호스팅
- image
- KT인턴
- logstash
- YOLO
- tensorflow2
- GIT
- 계정 여러 개 동시 사용
- java
- github
- 2206
- HAXM
- filebeat
- COLAB
- elasticsearch
- kibana
- python3 #동적계획법 #permutations
- container
- 백준
- docker
- 안드로이드스튜디오
- 개발자로드맵
- 벽부수고이동하기
- javascript #콜백함수 #비동기
- KT
- 정보처리기사실기
Archives
- Today
- Total
코딩하고자용 블로그
ngx_http_proxy_connect_module을 활용한 CONNECT 요청을 처리하는 Docker 기반 nginx 서버 생성 본문
Computer Science/Server
ngx_http_proxy_connect_module을 활용한 CONNECT 요청을 처리하는 Docker 기반 nginx 서버 생성
코딩하고자용 2024. 6. 21. 21:01개요
웹서버에서 HTTP 요청을 받을 때, POST, GET 외에 CONNECT 메서드를 받을 때가 있다.
CONNECT 메서드는 주로 프록시 서버가 클라이언트와 특정 서버 간의 터널을 설정할 때 사용된다.
nginx에서는 request method로 CONNECT가 들어올 경우 클라이언트가 올바른 요청을 하지 않은 것(400 response code)으로 판단한다.
이에 ngx_http_proxy_connect_module을 추가하여 connect 메서드를 허용하고 문제없이 proxy 역할을 할 수 있는 nginx를 구현하고자 한다.
가상환경 구현을 위해 많은 사람들이 Docker를 통해 쉽게 컨테이너를 띄워 웹서버를 구현하고 있으며, 상용 서버와 같은 환경을 만들기 위한 Dockerfile 예시를 작성하고자 한다.
기본 Setting
구현하고자하는 환경은 다음과 같다.
- OS : Cent OS 7
- Web Server : Nginx 1.14
Dockerfile 세팅은 다음과 같다.
FROM centos:7
RUN yum install yum-utils
RUN yum install -y epel-release
RUN yum install -y gcc pcre pcre-devel openssl-devel zlib zlib-devel git curl patch make gcc-c++
RUN curl -O http://nginx.org/download/nginx-1.14.0.tar.gz && \
tar -zxvf nginx-1.14.0.tar.gz
RUN git clone https://github.com/chobits/ngx_http_proxy_connect_module
WORKDIR /nginx-1.14.0
RUN patch -p1 < /ngx_http_proxy_connect_module/patch/proxy_connect_rewrite_1014.patch
RUN ./configure --with-compat --add-dynamic-module=/ngx_http_proxy_connect_module
RUN make
RUN make install
RUN mkdir -p /etc/nginx/modules && \
cp /usr/local/nginx/modules/ngx_http_proxy_connect_module.so /etc/nginx/modules/
COPY default.conf /usr/local/nginx/conf/conf.d/default.conf
COPY nginx.conf /usr/local/nginx/conf/nginx.conf
COPY mime.type /etc/nginx/mime.types
RUN useradd -r nginx
# 로그 디렉토리 생성 및 권한 설정
RUN mkdir -p /var/log/nginx && \
chown nginx:nginx /var/log/nginx
ENV PATH="/usr/local/nginx/sbin:${PATH}"
EXPOSE 10080
CMD ["nginx", "-g", "daemon off;"]
- 1번 줄: centos image를 가져온다
- 2번 줄: 패키지 관리를 위해 yum-utils 설치
- 3번 줄: 기본 운영 체제 리포지토리에 포함되지 않은 추가 소프트웨어 패키지에 접근할 수 있게 해 줌
- 4번 줄
- gcc: GNU Compiler Collection의 약자로, C와 C++ 프로그래밍 언어를 위한 컴파일러
- pcre, pcre-devel: Perl Compatible Regular Expressions 라이브러리로, 정규 표현식 처리를 위해 사용
- openssl-devel: OpenSSL 개발 라이브러리로, 암호화 및 SSL/TLS 프로토콜 구현에 필요
- zlib, zlib-devel: 데이터 압축 라이브러리
- patch: 소스 코드의 변경 사항을 적용하는 데 사용되는 유틸리티
- make: 프로그램 빌드 자동화 도구
- 5 ~ 6번 줄: nginx, ngx_http_proxy_connect module 파일 다운로드
- 7 ~ 8번 줄: configure -> 시스템 환경 확인하고 빌드 준비. 동적 모듈로 추가하고 호환성 모드 활성화(동적 모듈이 다양한 버전의 nginx에서 설정될 수 있도록 보장)
- 9 ~ 15번 줄: make를 통해 so 파일 생성 및 파일 복사
- 17 ~ 19번 줄: 사용할 conf 파일 복사
- 20번 줄 ~ : 권한 설정 및 nginx 구동
추가 작성 예정
'Computer Science > Server' 카테고리의 다른 글
ElasticStack에 대한 정리 (0) | 2023.04.22 |
---|---|
Docker docs 정리 (2) - Get Started (0) | 2022.08.24 |
Docker docs 정리 (1) - Overview (0) | 2022.08.22 |