nginx 역방향 에이전트 구축
13881 단어 Nginx
좋 은 블 로 그 를 만 나 서 옮 겨 실 으 면 뒤에서 찾 아 볼 수 있 습 니 다.권리 침해 가 있 으 면 원 블 로 거들 에 게 연락 하여 즉시 삭제 하 세 요.만약 당신 에 게 폐 를 끼 쳤 다 면, 나 자신 은 매우 죄송합니다!원문 블 로그 주소: nginx 역방향 대 리 를 구축 하여 인터넷 도 메 인 이름 으로 전송 합 니 다. 번 거 로 우 시 겠 지만 글 에 원래 블 로그 주 소 를 표시 해 주 십시오. 감사합니다!세계 평 화 를 기원 합 니 다!
원문 은 다음 과 같다.
정경
회사 내 네트워크 에 여러 대의 서버 가 있 기 때문에 http 서 비 스 는 회사 외부 네트워크 의 정적 IP 에 투사 해 야 합 니 다. 만약 에 경로 의 포트 맵 으로 하면 내부 네트워크 서버 의 80 포트 만 외부 네트워크 80 포트 에 투사 할 수 있 고 다른 서버 의 80 포트 는 외부 네트워크 의 비 80 포트 에 만 투사 할 수 있 습 니 다.80 포트 가 아 닌 맵 은 접근 할 때 도 메 인 이름 에 포트 를 추가 해 야 하기 때문에 비교적 번거롭다.그리고 회사 의 입구 길 은 최대 20 개의 포트 맵 만 할 수 있다.앞으로 부족 할 거 야.그 다음 에 k 형 은 내부 네트워크 에 nginx 역방향 프 록 시 서버 를 구축 하고 nginx 역방향 프 록 시 서버 의 80 을 외부 네트워크 IP 의 80 에 투사 할 것 을 제안 했다. 이렇게 회사 외부 네트워크 IP 를 가리 키 는 도 메 인 이름 의 HTTP 요청 은 nginx 역방향 프 록 시 서버 로 보 내 고 nginx 역방향 프 록 시 를 이용 하여 도 메 인 이름과 다른 기계 의 포트 에 전송 하면 된다.'도 메 인 이름 에 따라 해당 서버 의 특정 포트 로 자동 으로 전송' 하 는 효과 가 있 는데 공유 기의 포트 맵 은 '포트 에 따라 해당 서버 의 특정 포트 로 자동 으로 전송' 하 는 것 일 뿐 이 니 정말 기쁘다.
관련 지식: nginx 컴 파일 설치, nginx 역방향 에이전트 기본 설정, 포트 맵 지식, 그리고 네트워크 도 메 인 이름 등 상식.
이번 실험 목 표 는 브 라 우 저 에 xxx 123. tk 를 입력 하면 내부 망 기계 192.168.10.38 의 3000 포트 에 접근 할 수 있 고 xxx 456. tk 를 입력 하면 내부 망 기계 192.168.10.40 의 80 포트 에 접근 할 수 있다.
배치 절차
서버 ubuntu 12.04
창고 업데이트
apt-get update -y
apt-get install wget -y
nginx 와 관련 패키지 다운로드
pcre 는 rewrite 모듈 을 컴 파일 하기 위해 서 입 니 다. zlib 는 gzip 기능 을 지원 하기 위해 서 입 니 다. 어, 여기 nginx 버 전 은 좀 낡 았 습 니 다. 저 는 nginx 를 업그레이드 하 는 실험 용 을 해 야 하기 때 문 입 니 다. 여러분 은 새로운 버 전 을 설치 할 수 있 습 니 다.
cd /usr/local/src
wget "ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.33.tar.gz">ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.33.tar.gz
wget "http://zlib.net/zlib-1.2.8.tar.gz">http://zlib.net/zlib-1.2.8.tar.gz
wget "http://nginx.org/download/nginx-1.4.2.tar.gz">http://nginx.org/download/nginx-1.4.2.tar.gz
tar xf pcre-8.33.tar.gz
tar xf zlib-1.2.8.tar.gz
컴 파일 환경 설치
apt-get install build-essential libtool -y
nginx 사용자 만 들 기
이른바 unprivileged user
useradd -s /bin/false -r -M -d /nonexistent www
컴 파일 설치 시작
/configure --with-pcre=/usr/local/src/pcre-8.33 --with-zlib=/usr/local/src/zlib-1.2.8 --user=www --group=www \
--with-http_stub_status_module --with-http_ssl_module --with-http_realip_module
make
make install
폴 더 권한 부여
chown -R www:www /usr/local/nginx
프로필 수정
vim nginx.conf
user www www;
worker_processes 1;
error_log logs/error.log;
pid logs/nginx.pid;
worker_rlimit_nofile 65535;
events {
use epoll;
worker_connections 65535;
}
http {
include mime.types;
default_type application/octet-stream;
include /usr/local/nginx/conf/reverse-proxy.conf;
sendfile on;
keepalive_timeout 65;
gzip on;
client_max_body_size 50m; # ,
client_body_buffer_size 256k;
client_header_timeout 3m;
client_body_timeout 3m;
send_timeout 3m;
proxy_connect_timeout 300s; #nginx ( )
proxy_read_timeout 300s; # , ( )
proxy_send_timeout 300s;
proxy_buffer_size 64k; # (nginx)
proxy_buffers 4 32k; #proxy_buffers , 32k ,
proxy_busy_buffers_size 64k; # (proxy_buffers*2)
proxy_temp_file_write_size 64k; # , , upstream ,
proxy_ignore_client_abort on; #
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
역방향 프 록 시 설정 파일 편집: vim / usr / local / nginx / conf / reverse - proxy. conf
server
{
listen 80;
server_name xxx123.tk;
location / {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://192.168.10.38:3000;
}
access_log logs/xxx123.tk_access.log;
}
server
{
listen 80;
server_name xxx456.tk;
location / {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://192.168.10.40:80;
}
access_log logs/xxx456.tk_access.log;
}
그 다음 에 nginx 설정 파일 을 다시 불 러 와 서 수정 사항 을 적용 시 킨 다음 에 xxx 123. tk 도 메 인 이름 을 회사 의 정적 IP 에 가리 키 면 브 라 우 저 에서 xxx 123. tk 를 입력 할 때 방문 하 는 네트워크 서버 192.168.10.38 의 3000 포트 를 성공 적 으로 수행 할 수 있 습 니 다. xxx456. tk 를 입력 하여 192.168.10.40 의 80 포트 를 방문 하 는 역할 을 성공 적 으로 할 수 있 습 니 다. 백 엔 드 기기 에 부하 균형 을 맞 추 려 면 아래 설정 과 같 습 니 다.nagios. xxx 123. tk 에 대한 요 구 를 내부 망 의 131 과 132 두 기계 에 부하 균형 을 맞 추 었 다.
upstream monitor_server {
server 192.168.0.131:80;
server 192.168.0.132:80;
}
server
{
listen 80;
server_name nagios.xxx123.tk;
location / {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://monitor_server;
}
access_log logs/nagios.xxx123.tk_access.log;
}
음, 부하 균형 과 캐 시 에 대해 서 는 더 이상 말 하지 않 겠 습 니 다. 여 기 는 간단 한 '도 메 인 이름 퍼 가기' 를 해 야 합 니 다.기능. 또한, http 요청 은 마지막 으로 리 버스 프 록 시 에서 뒷부분 으로 전달 되 는 기기 이기 때문에 백 엔 드 기기 의 원래 방문 로그 기록 의 방문 IP 는 리 버스 프 록 시 IP 입 니 다. 실제 IP 를 기록 하려 면 백 엔 드 기기 의 로그 격 을 수정 해 야 합 니 다. 백 엔 드 도 nginx 라 고 가정 합 니 다. 백 엔 드 설정 파일 에 이 단락 을 추가 하면 됩 니 다.가능:
log_format access '$HTTP_X_REAL_IP - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" $HTTP_X_Forwarded_For';
access_log logs/access.log access;
원래 로그 의 형식 이 어떻게 되 는 지 다시 봅 시다.
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
차 이 를 알 겠 죠.
닥 친 문제
이전 에는 아래 단락 을 설정 하지 않 았 습 니 다. 방문 할 때 504 gateway timeout 이 가끔 나타 나 기 때문에 조사 하기 가 쉽 지 않 습 니 다.
proxy_connect_timeout 300s;
proxy_read_timeout 300s;
proxy_send_timeout 300s;
proxy_buffer_size 64k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
proxy_ignore_client_abort on;
오류 로그:
...upstream timed out (110: Connection timed out) while reading response header from upstream, client: ...( )
로그 에서 볼 때 연결 시간 이 초과 되 었 습 니 다. 인터넷 에서 검색 한 후에 백 엔 드 서버 응답 시간 이 초과 되 었 을 것 입 니 다. 대담 한 가설 에 따라 증 거 를 찾 는 원칙 에 따라 잘못된 원인 을 가정 한 이상 실험 을 통 해 오 류 를 재현 해 야 합 니 다. 그러면 프 록 시 시간 초과 파 라미 터 를 조정 하고 반대로 프 록 시 시간 초과 밸브 값 을 작 게 설정 합 니 다 (예 를 들 어 1ms).504 가 차례로 나타 나 는 지 살 펴 보 았 습 니 다. 나중에 proxy read timeout 이라는 매개 변 수 를 1ms 로 설정 할 때 방문 할 때마다 504 가 나타 나 는 것 을 발 견 했 습 니 다. 그래서 이 매개 변 수 를 크게 조정 하여 위의 설정 을 추가 하여 문 제 를 해결 하 였 습 니 다.
작성 자 메 일:[email protected]문제 가 있 으 면 EMAIL 작가 에 게 직접 질문 을 할 수 있 습 니 다. 물론 우리 ttlsa 그룹 에 가입 하여 단독으로 개인 채 팅 을 하거나 단체 로 질문 을 할 수도 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
linux2에 nginx 설치설치 가능한 nginx를 확인하고, 해당 nginx를 설치한다. localhost 혹은 해당 ip로 접속을 하면 nginx 화면을 볼 수 있다....
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.