프록시 프로토콜은 nginx에 적용됩니다
우리는 nginx가 웹 서버이자 프록시 서버라는 것을 알고 있습니다. 이는 일반적으로 프록시 서버 또는 로드 밸런싱 소프트웨어(Haproxy, Amazon Elastic Load Balancer(ELB)
) 뒤에서 작동합니다. 우선, 클라이언트는 프록시 서버나 로드 밸런싱 소프트웨어에 요청을 시작한 다음 실제 웹 액세스를 위해 요청이 nginx로 전달됩니다.
다중 소프트웨어 계층을 통과했기 때문에 클라이언트의 정보 중 일부는 다음과 같습니다. IP 주소, 포트 번호 등이 손실될 수 있으므로 문제 분석 및 데이터 통계에 해를 끼칠 수 있습니다. 이 경우 정확한 요청 환경을 얻기 위해 클라이언트의 실제 IP 주소를 얻으려고 합니다. PROXY 프로토콜을 사용해야 합니다. 앞에서 언급한 프록시 또는 LSB가 HTTP, SSL, HTTP/2, SPDY, WebSocket 또는 TCP 프로토콜인지에 관계없이 PROXY 프로토콜을 구현하는 경우 nginx는 클라이언트의 원래 IP 주소를 가져와 일부 작업을 수행할 수 있습니다. 원래 IP 주소를 기반으로 한 작업, 악성 IP로부터의 접근 차단, 다른 IP를 기반으로 다른 언어나 페이지 표시, 보다 간단한 로깅 및 통계 등의 특수 작업은 모두 매우 효과적입니다
물론, PROXY 프로토콜을 지원하려면 nginx 버전을 사용해야 합니다. 특정 버전 요구 사항은 다음과 같습니다.
PROXY 프로토콜 v2를 지원하려면 NGINX Plus R16 또는 NGINX Open Source 1.13이 필요합니다. 11.
HTTP용 ROXY 프로토콜을 지원하려면 NGINX Plus R3 또는 NGINX Open Source 1.5.12가 필요합니다.
TCP 클라이언트 측 PROXY 프로토콜을 지원하려면 NGINX Plus R7 또는 NGINX Open Source 1.9가 필요합니다.
TCP, NGINX Plus R11 또는 NGINX Open Source 1.11.4에 대한 PROXY 프로토콜을 지원하려면
nginx에서는 다음 변수를 통해 해당 클라이언트 정보를 얻을 수 있습니다.
$proxy_protocol_addr 및 $proxy_protocol_port는 각각 원래 클라이언트의 IP 주소와 포트 번호를 나타냅니다.
$remote_addr 및 $remote_port는 로드 밸런서의 IP 주소와 포트를 나타냅니다.
RealIP 확장 모듈을 사용하는 경우 다음과 같습니다. 모듈은 $remote_addr 및 $remote_port의 두 값을 다시 작성합니다. 이는 원래 클라이언트의 IP 주소와 포트 번호로 대체됩니다.
그런 다음 $realip_remote_addr 및 $realip_remote_port를 사용하여 로드 밸런서의 IP 주소와 포트를 나타냅니다.
RealIP 확장 모듈에서 $proxy_protocol_addr 및 $proxy_protocol_port의 의미는 변경되지 않으며 여전히 원래 클라이언트의 IP 주소 및 포트 번호입니다.
nginx에서 프록시 프로토콜 구성 및 사용
위에서 nginx에서 프록시 프로토콜의 기본 적용에 대해 언급했습니다. nginx에서 특정 구성을 수행하는 방법에 대해 이야기해 보겠습니다.
nginx에서 프록시 프로토콜 활성화
nginx가 이미 프록시 프로토콜을 지원하는 버전인 경우 프록시 프로토콜을 활성화하는 것은 매우 간단합니다. 아래와 같이 서버의 수신 대기에 Proxy_protocol을 추가하기만 하면 됩니다.
http { #... server { listen 80 proxy_protocol; listen 443 ssl proxy_protocol; #... } } stream { #... server { listen 112233 proxy_protocol; #... } }
모두 더 친숙한 것은 nginx에서 http/https에 대한 지원을 나타내는 http 블록입니다. Nginx는 TCP/UDP 프로토콜을 지원합니다. 이 기능은 많은 사람들에게 비교적 생소한 stream 모듈을 통해 구현됩니다.
위 구성을 통해 nginx는 tcp/udp 프로토콜과 http/https 프로토콜 모두에서 프록시 프로토콜을 지원할 수 있습니다.
Real-IP 모듈 사용
Real-IP 모듈은 nginx와 함께 제공되는 모듈입니다. 다음 명령을 실행하여 nginx에 real-ip 모듈이 설치되어 있는지 확인할 수 있습니다.
nginx -V 2>&1 | grep -- 'http_realip_module' nginx -V 2>&1 | grep -- 'stream_realip_module'
현재 사용 중인 버전이 그렇지 않은 경우 실제 IP가 있습니다. 걱정하지 마세요. 지금은 소스 코드에서 컴파일해야 할 수도 있습니다.
컴파일 과정에서 구성 명령을 실행해야 합니다. 이 구성 명령에서는 활성화할 기능(예: stream 또는 http_ssl_module)을 지정할 수 있습니다.
$ ./configure --sbin-path=/usr/local/nginx/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid --with-pcre=../pcre-8.44 --with-zlib=../zlib-1.2.11 --with-http_ssl_module --with-stream --with-mail
실제 IP 기능을 활성화하려면 다음을 추가할 수 있습니다:
--with-http_realip_module
nginx가 SLB 또는 프록시 뒤에서 실행 중인 경우 set_real_ip_from 명령을 사용하여 아래와 같이 프록시 또는 로드 밸런싱 서버의 IP 범위를 지정할 수 있습니다.
server { #... set_real_ip_from 192.168.1.0/24; #... }
그런 다음 IP 주소를 바꿔야 합니다. 실제 클라이언트의 주소로 프록시 또는 SLB를 사용하면 다음과 같이 사용할 수 있습니다.
http { server { #... real_ip_header proxy_protocol; } }
요청 전달
http이든 스트림 블록이든 요청이 후속 업스트림으로 전달되는 상황이 발생할 수 있습니다. 업스트림의 경우 프록시나 slb 주소 대신 실제 클라이언트 IP 주소를 받기를 원하며 다음 설정으로 해결할 수 있습니다.
http { proxy_set_header X-Real-IP $proxy_protocol_addr; proxy_set_header X-Forwarded-For $proxy_protocol_addr; }
stream { server { listen 12345; proxy_pass example.com:12345; proxy_protocol on; } }
http와 스트림의 설정이 다릅니다.
Logging
Log는 문제를 찾고 데이터의 통계 분석을 수행하는 데 매우 유용한 기능입니다. 물론 실제 클라이언트 IP 주소도 필요합니다.
아래와 같이 $proxy_protocol_addr 변수를 사용하여 http 및 스트림 블록에 해당 로그를 기록할 수 있습니다.
http { #... log_format combined '$proxy_protocol_addr - $remote_user [$time_local] ' '"$request" $status $body_bytes_sent ' '"$http_referer" "$http_user_agent"'; }
stream { #... log_format basic '$proxy_protocol_addr - $remote_user [$time_local] ' '$protocol $status $bytes_sent $bytes_received ' '$session_time'; }
위 내용은 nginx에서 프록시 프로토콜을 구성하고 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

NginxUnit은 여러 프로그래밍 언어를 지원하며 모듈 식 디자인을 통해 구현됩니다. 1. 언어 모듈로드 : 구성 파일에 따라 해당 모듈을로드합니다. 2. 응용 프로그램 시작 : 호출 언어가 실행될 때 응용 프로그램 코드를 실행합니다. 3. 요청 처리 : 응용 프로그램 인스턴스로 요청을 전달하십시오. 4. 응답 반환 : 처리 된 응답을 클라이언트에 반환합니다.

Nginx와 Apache는 고유 한 장점과 단점이 있으며 다른 시나리오에 적합합니다. 1.NGINX는 높은 동시성 및 낮은 자원 소비 시나리오에 적합합니다. 2. Apache는 복잡한 구성 및 풍부한 모듈이 필요한 시나리오에 적합합니다. 핵심 기능, 성능 차이 및 모범 사례를 비교하면 요구에 가장 적합한 서버 소프트웨어를 선택할 수 있습니다.

질문 : nginx를 시작하는 방법? 답변 : nginx 스타트 업 설치 nginx verification nginx is nginx 시작 다른 시작 옵션을 자동으로 시작합니다.

nginx가 시작되었는지 확인하는 방법 : 1. 명령 줄을 사용하십시오 : SystemCTL 상태 nginx (linux/unix), netstat -ano | Findstr 80 (Windows); 2. 포트 80이 열려 있는지 확인하십시오. 3. 시스템 로그에서 nginx 시작 메시지를 확인하십시오. 4. Nagios, Zabbix 및 Icinga와 같은 타사 도구를 사용하십시오.

Nginx 서비스를 종료하려면 다음 단계를 따르려면 다음 단계를 결정합니다. Red Hat/Centos (SystemCTL 상태 NGINX) 또는 Debian/Ubuntu (서비스 NGINX 상태) 서비스 중지 : Red Hat/Centos (SystemCTL STOP NGINX) 또는 DEBIAN/UBUNTU (서비스 NGINX STOP) DIA AUTAL STARTUP (옵션) : RED HAT/CENTOS (SystemCTLED) 또는 DEBIAN/UBUNT (SystemCTLED). (Syst

Windows에서 Nginx를 구성하는 방법은 무엇입니까? nginx를 설치하고 가상 호스트 구성을 만듭니다. 기본 구성 파일을 수정하고 가상 호스트 구성을 포함하십시오. 시작 또는 새로 고침 Nginx. 구성을 테스트하고 웹 사이트를보십시오. SSL을 선택적으로 활성화하고 SSL 인증서를 구성하십시오. 포트 80 및 443 트래픽을 허용하도록 방화벽을 선택적으로 설정하십시오.

서버는 요청 된 리소스에 액세스 할 수있는 권한이 없으므로 Nginx 403 오류가 발생합니다. 솔루션에는 다음이 포함됩니다. 파일 권한 확인 권한을 확인하십시오. .htaccess 구성을 확인하십시오. nginx 구성을 확인하십시오. Selinux 권한을 구성하십시오. 방화벽 규칙을 확인하십시오. 브라우저 문제, 서버 장애 또는 기타 가능한 오류와 같은 다른 원인을 해결하십시오.

Linux에서 Nginx를 시작하는 단계 : Nginx가 설치되어 있는지 확인하십시오. systemctl start nginx를 사용하여 nginx 서비스를 시작하십시오. SystemCTL을 사용하여 NGINX를 사용하여 시스템 시작시 NGINX의 자동 시작을 활성화하십시오. SystemCTL 상태 nginx를 사용하여 시작이 성공했는지 확인하십시오. 기본 환영 페이지를 보려면 웹 브라우저의 http : // localhost를 방문하십시오.


핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

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

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.
