Nginx 스트림 프록시 기본
Nginx 스트림 모듈은 4 층 프록시에 사용됩니다. 1. TCP 전이 프록시 MySQL은 업스트림을 표시하고 proxy_pass를 표시하도록 구성되어야합니다. 2. TLS 통과 통과는 SSL을 종료하지 않으며 엔드 투 엔드 암호화를 유지합니다. 3. UDP 프록시 + UDP 키워드는 DNS 및 기타 시나리오에 적합합니다. 4. 일반적인 옵션은 proxy_timeout, so_keepalive 및 access_log; 5. 스트림은 최상위 레벨에 위치하고 HTTP 모듈 포트에서 분리되어야합니다.
NGINX의 스트림 모듈은 TCP 및 UDP 트래픽 (레이어 4 프록시)을 처리하는 데 사용되며 HTTP 모듈과 같은 레이어 7 개의 응용 레이어 프로토콜 (예 : HTTP/HTTPS)을 처리하지 않습니다. 프록시 데이터베이스, 메일 서비스, SSH, Redis, MySQL 또는 TLS 통과 통과 트래픽이 필요한 경우 스트림은 더 가볍고 효율적인 솔루션입니다.

✅ 가장 기본적인 구성 : TCP 전이 프록시
MySQL 요청을 외부 Access server_ip:3306
에서 인트라넷으로 전달한다고 가정하십시오 192.168.1.100:3306
:
개울 { 업스트림 mysql_backend { 서버 192.168.1.100:3306 MAX_FAILS = 2 FAIL_TIMEOUT = 10S; } 서버 { 듣기 3306; proxy_pass mysql_backend; } }
-
listen 3306
: 기계의 3306 포트를 들으십시오 (특정 IP에 바인딩하기 위해bind=your_ip
추가 할 수 있습니다). -
proxy_pass
: 콘텐츠 구문 분석없이 직접 트래픽을 전달합니다 -
upstream
로드 밸런싱 및 건강 검사를 지원합니다 (health_check
가용성이 높음)
? TLS 트래픽 패스 스루 (종료되지 않음 SSL)
백엔드 MySQL이 SSL을 활성화 한 경우 Nginx에서 해독하는 것을 원하지 않습니다 (엔드 투 엔드 암호화 유지) :

서버 { 듣기 3306; proxy_pass mysql_backend; proxy_timeout 3s; proxy_responses 1; # 선택 사항 : 연결을 설정하기 전에 첫 번째 응답 패킷을 기다립니다 (느린 연결 공격 방지) }
이 방법을 TLS Passthrough라고합니다. NGINX는 암호화 된 데이터를 터치하지 않지만 바이트 스트림 전달만을 담당합니다.
? UDP 프록시 예제 (예 : DNS)
개울 { 업스트림 dns_backend { 서버 8.8.8.8:53; } 서버 { 53 UDP를 들어보십시오. proxy_pass dns_backend; proxy_timeout 5s; } }
- UDP 프로토콜을 나타내려면
udp
키워드를 추가하십시오 - DNS, VoIP 및 게임 서버와 같은 UDP 시나리오에 적합합니다.
? 일반적인 실제 구성 항목
지침 | 설명 |
---|---|
proxy_timeout | 클라이언트/백엔드에 데이터 전송이없는 시간 초과 시간 |
proxy_responses | 연결이 성공하기 전에 백엔드가 응답하기를 기다리는 패킷 수 (anti-syn 홍수) |
so_keepalive | 긴 연결을 유지하려면 TCP Keepalive를 켜십시오 |
access_log /path/to/stream.log | 녹음 연결 로그 (형식은 HTTP 로그와 다릅니다) |
예를 들어 연결 로그를 활성화합니다.

서버 { 듣기 3306; proxy_pass mysql_backend; access_log /var/log/nginx/stream_mysql.log; }
⚠️ notes
- 스트림은
nginx.conf
의 최상위stream { }
블록으로 작성해야하며http { }
에 배치 할 수 없습니다. - HTTP를 사용하고 동시에 스트림을 사용하는 경우 다른 포트 (또는 다른 IP)를 듣도록하십시오.
- 애플리케이션 계층 프로토콜은 기본적으로 해결되지 않으므로 경로 라우팅 및 헤더 수정과 같은 7 층 작업을 수행 할 수 없습니다.
기본적으로 그게 다야. 스트림 프록시는 복잡하지 않지만 세부 사항을 무시하기 쉽습니다 (예 : 로그 위치 및 UDP 작성). 위의 예제를 마스터하면 대부분의 4 계층 프록시 요구 사항을 해결할 수 있습니다.
위 내용은 Nginx 스트림 프록시 기본의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undress AI Tool
무료로 이미지를 벗다

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

빠른 고장을 보장하기 위해 proxy_connect_timeout을 5-10 초로 설정하십시오. 2. 느린 업로드에 적응하려면 proxy_send_timeout을 10-30 초로 설정하십시오. 3. Proxy_Read_Timeout은 504 개의 오류를 피하기 위해 응용 프로그램의 최대 응답 시간과 일치합니다. 4.로드 균형이 균형이 잡히면 재시도 시간을 제한하도록 proxy_next_upstream_timeout을 설정하십시오. 이러한 값을 올바르게 구성하면 게이트웨이 시간 초과를 크게 줄이고 사용자 경험을 향상 시키며 실제 로그 및 모니터링과 함께 지속적으로 조정할 수 있습니다.

nginx의 Server_name 지시문은 클라이언트가 보낸 호스트 헤더를 기반으로 요청을 처리하기 위해 가상 호스트를 선택하는 데 사용됩니다. 구체적으로 : 1. Server_Name은 정확한 일치, 와일드 카드 또는 일반 표현식을 통해 호스트 헤더와 일치하여 사용할 서버 블록을 결정합니다. 2. 일치하지 않으면 기본 서버 블록으로 돌아갑니다. 일반적으로 첫 번째 또는 명시 적으로 기본 _server로 표시됩니다. 3. Server_Name의 올바른 구성은 컨텐츠 복제를 피하고 SEO를 개선하며 성능 향상에 도움이됩니다. 4. 복잡한 일치와 와일드 카드는 명확성과 효율성을 유지하기 위해주의해서 사용해야합니다. 따라서 Server_Name을 합리적으로 설정하면 트래픽이 올바르게 라우팅되고 서버 치수를 단순화 할 수 있습니다.

리디렉션 (301/302) Changebrowserurlandareseo- 친근한 형식의 친환경 형식;

nginxactsasareverseproxy, hidinginternalportsandallowingmultipleappsononeserver; 2. whyndlesssl/tlsterminationefficientlyVialet'sencrypt, offloadingEncryptionfromnode; 3. itservesstaticfileSfasterThannodeBydiGrectlyManagingRoutes like/; 4.ITEBLESLOLOA

nginxingresscontroller는 kubernetes의 핵심 구성 요소로 HTTP/HTTPS 라우팅,로드 밸런싱, SSL 종료, 다시 작성 및 스트림 제한을 구현합니다. 1. 호스트 이름 또는 경로에 따라 해당 서비스에 요청을 전달할 수 있습니다. 2. HTTP를 구현하기 위해 비밀을 통해 TLS/SSL의 구성을 지원합니다. 3. 구성 및 주석을 사용하여 재 작성 및 스트림 제한과 같은 유연한 구성을 제공합니다. 4. 권장 헬름 또는 공식 Yaml 배치; 5. PathType 매칭 규칙, 백엔드 서비스 건강 상태, 글로벌 구성 및 로그 모니터링에주의하십시오. 생산 환경에서 안정적이고 안정적인 트래픽 입력 솔루션입니다.

Ubuntu/Debian에 nginx를 설치하려면 패키지 목록 (sudoaptupdate), nginx (sudoaptinstallnginx-y) 설치, 서비스 시작 및 활성화 (sudosystemctlstart/enablenginx); 2. Centos/Rhel에서 Epel 소스 (Sudodnfinstallepel release-Y), Nginx 설치, 서비스 시작 및 방화벽 HTTP/HTTPS 포트 (FireWall-CMD 명령) 개방을 활성화해야합니다. 3. 설치 후 구성 구문 (SudongInx-T)을 확인하고 기본 사이트 디렉토리를 확인해야합니다.

SystemCtlStatusNginx를 사용하여 NGINX 서비스 상태를 확인하여 실행 중인지 및 전원 켜기를 확인하십시오. 2. 시작, 중지, 재시작, 재 장전, 활성화 및 비활성화와 같은 핵심 명령을 마스터하고 연결 방해를 피하기 위해 Reload를 사용하는 데 우선 순위를 부여합니다. 3. JournalCtl -unginx.service를 사용하여 로그를 보면 -F 매개 변수를 실시간으로 모니터링하여 시작 시동 실패를 용이하게 할 수 있습니다. 4. 재 장전 실패를 방지하기 위해 구성을 수정하기 전에 SudongInx-T Test 구문을 실행하십시오. 5. 구성을 사용자 정의 해야하는 경우 sudosystemctleditnginx를 사용하여 Direct 대신 보안 덮어 쓰기 파일을 만듭니다.

DynamicModules는 1.9.11에서 nginx에 의해 도입 된 기능으로, .so 모듈을 런타임에 적합하지 않고로드 할 수 있습니다. 1. 모듈이 동적 컴파일 (예 : add-dynamic-module)을 지원하는지 확인합니다. 2. nginx.conf 상단에있는 load_module 명령어가있는 .so 파일을로드하십시오. 3. 구성을 확인하고 재 장전이 적용됩니다. 장점은 핫 스와핑, 쉬운 업그레이드 및 컨테이너화입니다. 버전 매칭, 올바른 경로, 핫 제거 할 수없는 능력 및 타사 모듈 보안 문제에주의하십시오.
