nginx 지원tcp_proxy_module nginx 설치 (1.9.9 버 전)
28643 단어 일상 업무
1. nginx 서버 는 tcp 의 부하 균형 설정 을 지원 해 야 합 니 다.
2. 높 은 버 전의 nginx (1.10 이상?) 는 제3자 모듈 nginx 를 지원 하지 않 습 니 다.tcp_proxy_module 의 설치;
3. 높 은 버 전의 nginx 는 자체 tcp 부하 균형 설정 (stream 모듈) 이 있 지만 helhcheck 기능 은 상업 사용자 만 사용 할 수 있 고 제3자 tcp 심장 박동 검사 모듈 은 아직 적합 하지 않 습 니 다 (2018.5).
4. 낮은 버 전의 nginx 는 제3자 모듈 nginx 를 사용 할 수 있 습 니 다.tcp_proxy_module tcp 부하 균형 실현 및 check 로 심장 박동 검 측 지원, 패 치 설치 제3자 모듈 nginxtcp_proxy_module 는 tcp 부하 균형 과 심장 박동 검 사 를 실현 합 니 다.
고 버 전 tcp (NO) (제3자 모듈 은 지원 되 지 않 음) -- > 하 이 버 전 stream (NO) (helh check 은 사용 할 수 없 으 며, 적합 한 제3자 심장 박동 검사 모듈 이 보이 지 않 습 니 다) -- > 낮은 버 전의 nginx (제3자 모듈 을 설치 하여 tcp 부하 균형 실현)
5. 설 치 된 nginx 버 전: 1.9.9
nginx 설치
1. 준비 환경
yum install vim
yum install lsof
yum install ntpdate
yum -y install gcc-c++
yum install -y unzip zip
yum -y install patch
2. pcre 설치
tar 패키지 가 져 오기
서버 가 외부 네트워크 에 연결 할 수 없 기 때문에 로 컬 PC 에 다운로드 한 다음 서버 에 전송 해 야 합 니 다.
홈 페이지 로 가기 (http://www.pcre.org/) 해당 버 전의 tar 패 키 지 를 로 컬 PC 에 다운로드
서버 에서 해당 디 렉 터 리 (/ opt / app install) 아래 에 들 어가 rz 를 입력 하고 로 컬 에서 해당 하 는 tar 패 키 지 를 찾 아 서버 에 업로드 합 니 다.
windows Xftp , ( )
압축 해제 및 설치
tar -xvf pcre-8.37.tar.gz
cd pcre-8.37
./configure
make & make install
3. nginx 및 설치 시 필요 한 모듈 다운로드
nginx
홈 페이지 에 다운로드 (http://nginx.org/download/) nginx 대응 버 전의 압축 패 키 지 를 다운로드 하고 업로드 합 니 다. 절차 가 이전 과 같 습 니 다.
디 렉 터 리 (/ opt / app install) 에서 압축 풀기
tar -xvf nginx-1.9.9.tar.gz
해당 모듈
github 에서 검색 한 다음 에 해당 하 는 프로젝트 압축 패 키 지 를 다운로드 한 다음 에 같은 방식 으로 서버 에 전송 하고 압축 을 풀 수 있 습 니 다 (이 모듈 들 에 대해 통 일 된 경로 관리)
nginx_tcp_proxy_module-masternginx_upstream_check_module-masternginx-upstream-consistent-masterheaders-more-nginx-module-master
디 렉 터 리 (/ opt / app install) 에서 압축 풀기
unzip file
4 、 nginxtcp_proxy_패 치
nginx 를 직접 설치 하면 오류 가 발생 할 수 있 습 니 다. 두 가지 문제 가 있 음 을 알 수 있 습 니 다.
헝겊 을 깁다
설치 오류 알림
../nginx_tcp_proxy_module-master/ngx_tcp_upstream.c: In function 'ngx_tcp_upstream_connect':
../nginx_tcp_proxy_module-master/ngx_tcp_upstream.c:374: error: 'ngx_peer_connection_t' has no member named 'check_index'
../nginx_tcp_proxy_module-master/ngx_tcp_upstream.c:374: error: 'NGX_INVALID_CHECK_INDEX' undeclared (first use in this function)
../nginx_tcp_proxy_module-master/ngx_tcp_upstream.c:374: error: (Each undeclared identifier is reported only once
../nginx_tcp_proxy_module-master/ngx_tcp_upstream.c:374: error: for each function it appears in.)
../nginx_tcp_proxy_module-master/ngx_tcp_upstream.c:375: error: 'ngx_peer_connection_t' has no member named 'check_index'
../nginx_tcp_proxy_module-master/ngx_tcp_upstream.c: In function 'ngx_tcp_upstream_next':
../nginx_tcp_proxy_module-master/ngx_tcp_upstream.c:520: error: 'ngx_peer_connection_t' has no member named 'check_index'
../nginx_tcp_proxy_module-master/ngx_tcp_upstream.c:520: error: 'NGX_INVALID_CHECK_INDEX' undeclared (first use in this function)
../nginx_tcp_proxy_module-master/ngx_tcp_upstream.c:521: error: 'ngx_peer_connection_t' has no member named 'check_index'
../nginx_tcp_proxy_module-master/ngx_tcp_upstream.c:522: error: 'ngx_peer_connection_t' has no member named 'check_index'
../nginx_tcp_proxy_module-master/ngx_tcp_upstream.c: In function 'ngx_tcp_upstream_finalize_session':
../nginx_tcp_proxy_module-master/ngx_tcp_upstream.c:576: error: 'ngx_peer_connection_t' has no member named 'check_index'
../nginx_tcp_proxy_module-master/ngx_tcp_upstream.c:576: error: 'NGX_INVALID_CHECK_INDEX' undeclared (first use in this function)
../nginx_tcp_proxy_module-master/ngx_tcp_upstream.c:577: error: 'ngx_peer_connection_t' has no member named 'check_index'
../nginx_tcp_proxy_module-master/ngx_tcp_upstream.c:578: error: 'ngx_peer_connection_t' has no member named 'check_index'
make[1]: *** [objs/addon/nginx_tcp_proxy_module-master/ngx_tcp_upstream.o] Error 1
make[1]: Leaving directory `/opt/apps_install/nginx-1.9.9'
make: *** [build] Error 2
원인.
github 에 nginxtcp_proxy_module 모듈 의 설치 알림 패 치 로 인해 (앞으로 README 파일 을 열심히 읽 어야 합 니 다)
해결 방법
nginx 압축 해제 디 렉 터 리 에 들 어가 기
cd /opt/apps_intsall/nginx-1.9.9
헝겊 을 깁다
patch -p1 < /opt/app_install/nginx_tcp_proxy_module-master/tcp.patch
패 치 위 치 는 nginxtcp_proxy_module - master 압축 해제 파일 의 패 치 tcp. patch
패 치 결과
patching file src/core/ngx_log.c
Hunk #1 FAILED at 66.
1 out of 1 hunk FAILED -- saving rejects to file src/core/ngx_log.c.rej
patching file src/core/ngx_log.h
Hunk #1 FAILED at 29.
Hunk #2 FAILED at 37.
2 out of 2 hunks FAILED -- saving rejects to file src/core/ngx_log.h.rej
patching file src/event/ngx_event_connect.h
Hunk #1 succeeded at 33 (offset 1 line).
Hunk #2 succeeded at 44 with fuzz 2 (offset 1 line).
해결 링크
https://github.com/yaoweibin/nginx_tcp_proxy_module/blob/master/README.md
헤더 파일 수정
설치 오류 알림
In file included from ../nginx_tcp_proxy_module-master/ngx_tcp.h:32,
from ../nginx_tcp_proxy_module-master/ngx_tcp.c:5:
../nginx_tcp_proxy_module-master/ngx_tcp_upstream.h:144: error: expected specifier-qualifier-list before 'ngx_resolver_addr_t'
make[1]: *** [objs/addon/nginx_tcp_proxy_module-master/ngx_tcp.o] Error 1
make[1]: Leaving directory `/opt/apps_install/nginx-1.9.9'
make: *** [build] Error 2
원인.
nginx 1.9 버 전부터 addrs 의 구조 체 는 ngxaddr_t 를 ngx 로 변경resolver_addr_t 정의 파일 위치: / opt / appsinstall/nginx-1.9.9/src/core/ngx_resolver. h (하지만 nginx 1.9.9 의 헤더 파일 을 보 니 이 버 전이 바 뀌 지 않 았 거나 ngx addr t) nginx 에 있 습 니 다.tcp_proxy_module 제3자 모듈 의 헤더 파일 ngxtcp_upstream. h 에서 쓰 는 방법 은 여전히 ngxaddr_t, 버 전 때문에 일치 하지 않 음
해결 방법
공식 적 으로 새로운 nginxtcp_proxy_module 의 master 분기 가 이 문 제 를 해결 하고 헤더 파일 에 판단 을 추가 하 였 습 니 다.
#if (nginx_version) >= 1005008
#if (nginx_version) >= 1009001
ngx_resolver_addr_t *addrs;
#else
ngx_addr_t *addrs;
#endif
#else
in_addr_t *addrs;
#endif
하지만 여 기 는 아직 정확 하지 않 습 니 다. 버 전 번호 판단 이 정확 하지 않 은 것 같 습 니 다.resolver_addr_t, 결국 일치 하지 않 음
그래서 여기 서 바로 ngxresolver_addr_t 를 ngx 로 변경addr_t, 즉 어떤 버 전이 든 ngxaddr_t. 어쨌든 1.9.9 현재 설치 버 전에 적용 된다.
순서
제3자 모듈 패키지 의 헤더 파일 수정
vim /opt/apps_install/nginx_tcp_proxy_module-master/ngx_tcp_upstream.h
144 :ngx_resolver_addr_t --> ngx_addr_t
해결 링크
https://github.com/yaoweibin/nginx_tcp_proxy_module/issues/138
5. nginx 설치
cd /opt/app_install/nginx-1.9.9/
./configure --prefix=/opt/apps/nginx-1.9.9 --conf-path=/data/conf/nginx/nginx.conf --with-stream --with-mail --with-mail_ssl_module --with-http_realip_module --with-http_stub_status_module --with-http_gunzip_module --with-http_sub_module --with-http_ssl_module --with-pcre=../pcre-8.37 --add-module=../nginx_tcp_proxy_module-master --add-module=../nginx_upstream_check_module-master --add-module=../nginx-upstream-consistent-master --add-module=../headers-more-nginx-module-master
make & make install
6. 소프트 연결 설정 및 검증
/ opt / apps / nginx - 1.9.9 디 렉 터 리 아래
ln -s /data/conf/nginx /opt/apps/nginx-1.9.9/conf
/ opt / apps 디 렉 터 리 아래
ln -s /opt/apps/nginx-1.9.9 /opt/apps/nginx
/ opt 디 렉 터 리 아래 (먼저 / data 에 해당 하 는 디 렉 터 리 를 만 듭 니 다)
ln -s /data/conf /opt/conf
ln -s /data/logs /opt/logs
ln -s /opt/apps/nginx /opt/nginx
소프트 연결 효과
[@bx16-77-219 ~]# ll /opt/
total 12
drwxr-xr-x 3 root root 4096 May 28 12:00 apps
drwxr-xr-x 7 root root 4096 May 28 11:49 apps_install
lrwxrwxrwx 1 root root 10 May 28 12:14 conf -> /data/conf
lrwxrwxrwx 1 root root 10 May 28 12:14 logs -> /data/logs
lrwxrwxrwx 1 root root 15 May 28 12:08 nginx -> /opt/apps/nginx
drwxr-xr-x. 7 root root 4096 Apr 20 18:38 nofalcon-agent-deploy
[@bx16-77-219 ~]# ll /opt/apps
total 4
lrwxrwxrwx 1 root root 21 May 28 12:00 nginx -> /opt/apps/nginx-1.9.9
drwxr-xr-x 10 root root 4096 May 28 12:21 nginx-1.9.9
[@bx16-77-219 ~]# ll /opt/nginx/
total 32
drwx------ 2 nobody root 4096 May 28 11:56 client_body_temp
lrwxrwxrwx 1 root root 16 May 28 12:21 conf -> /data/conf/nginx
drwx------ 2 nobody root 4096 May 28 11:56 fastcgi_temp
drwxr-xr-x 2 root root 4096 May 28 11:54 html
drwxr-xr-x 2 root root 4096 May 28 11:59 logs
drwx------ 2 nobody root 4096 May 28 11:56 proxy_temp
drwxr-xr-x 2 root root 4096 May 28 11:54 sbin
drwx------ 2 nobody root 4096 May 28 11:56 scgi_temp
drwx------ 2 nobody root 4096 May 28 11:56 uwsgi_temp
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
nginx 지원tcp_proxy_module nginx 설치 (1.9.9 버 전)2. 높 은 버 전의 nginx (1.10 이상?) 는 제3자 모듈 nginx 를 지원 하지 않 습 니 다.tcp_proxy_module 의 설치; 3. 높 은 버 전의 nginx 는 자체 tcp 부하 균형 설정 (...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.