Nginx에서 서버와 위치의 일치 논리는 무엇입니까?
서버 일치 논리
nginx는 요청을 실행할 서버 블록을 결정할 때 주로 서버 블록의 listening 및 server_name 필드에 중점을 둡니다.
listen command
listen 필드는 서버 응답의 IP 주소를 정의하고 포트, 수신 필드가 명시적으로 구성되지 않은 경우 기본 수신은 0.0.0.0:80(루트) 또는 0.0.0.0:8080(비루트)입니다.
listen은 다음과 같이 구성할 수 있습니다.
ip 조합 and port
별도의 IP, 기본적으로 포트 80에서 수신 대기
별도의 포트, 기본적으로 모든 IP 인터페이스에서 수신 대기
unix 소켓 경로
마지막 항목은 일반적으로 만 사용됩니다. 다른 서버에서
사용할 서버를 선택하는 사이에 요청을 전달하는 규칙은 다음과 같습니다.
nginx는 먼저 청취 필드가 없는 모든 "불완전한" 청취 명령을 청취 0.0.0.0:80으로 변환하고, 청취합니다. 1.1.1.1 Listen to Listen 1.1.1.1:80 등
nginx는 요청된 IP와 포트를 기반으로 요청에 가장 잘 맞는 서버 블록 목록을 생성하며, 특정 IP와 일치하는 서버 블록에 우선 순위가 부여됩니다. 그런 다음 0.0.0.0이 선택됩니다. 그러나 두 경우 모두 포트가 정확히 일치해야 합니다.
가장 일치하는 항목이 하나만 있으면 일치하는 서버 블록이 응답에 사용됩니다. 그렇지 않으면 각 서버 블록의 server_name 지시문이 평가됩니다.
다시 한번, server_name 지시문은 Listen 지시문이 가장 일치하는 항목을 찾을 수 없는 경우에만 평가됩니다.
예를 들어, 다음과 같은 예를 가정합니다. com 도메인 이름은 192.168.0.1을 가리키고 192.168.0.1에 위치한 nginx는 다음 두 개의 서버 블록만 있습니다:
# server block 1server { listen 192.168.0.1; server_name other.com ... } # server block 2server { listen 80; server_name example.com ... }
server_name 지시어
listen 지시어에 따라 가장 일치하는 항목을 얻을 수 없는 경우 server_name 지시어를 구문 분석하기 시작합니다. nginx는 요청의 "host" 헤더를 확인합니다. 이 값에는 클라이언트가 실제로 요청하려는 도메인 이름 또는 IP 주소가 이 값을 기반으로 하여 server_name 지시어와 일치합니다. 일치 규칙은 다음과 같습니다:
nginx는 server_name 및 호스트 값과 정확히 일치하는 서버 블록을 찾으려고 시도합니다. 여러 개가 정확히 일치하는 경우 첫 번째로 일치하는 서버 블록이 사용됩니다.
정확하게 일치하는 서버 블록이 없으면 nginx는 server_name이 *로 시작하는 서버 블록을 찾으려고 시도합니다. 여러 개가 발견되면 가장 긴 일치 서버가 선택됩니다. 블록
으로 시작하는 서버 블록이 없으면 다음으로 끝나는 서버 블록을 찾습니다. 정규식(~으로 시작)을 사용하여 server_name을 정의하는 서버 블록의 경우 일치하는 항목이 여러 개 발견되면 첫 번째 일치 항목이 사용됩니다
정규식과 일치하는 서버 블록이 없으면 nginx는 하나의 기본 서버를 선택합니다. 각 IP 및 포트 조합은 하나의 기본 default_server 블록으로 구성할 수 있습니다. 블록이 없으면 사용 가능한 목록의 첫 번째 서버가 선택됩니다(이번 선택은 무작위입니다. 순서는 다음과 같습니다). 고정되지 않음)
예는 다음과 같습니다.
(1) 정확한 server_name 일치, 예:
server { listen 80; server_name www.domain.com; ... }
(2) * 와일드카드로 시작하는 문자열:
server { listen 80; server_name *.domain.com; ... }
(3) * 와일드카드로 끝나는 문자열:
server { listen 80; server_name www.*; ... }
(4) 일치하는 정규식:
server { listen 80; server_name ~^(?.+)\.domain\.com$; ... }
(5) 위 항목 중 어느 것도 일치하지 않으면 default_server가 사용됩니다. default_server가 지정되지 않은 경우 no로 호스트 값을 지정할 수 있습니다. 일치하면 오류가 클라이언트에 반환됩니다. 이는 다른 사람이 정크 트래픽을 귀하의 웹 사이트로 리디렉션하는 것을 방지하는 데 사용될 수 있습니다.
server { listen 80 default_server; server_name _; return 444; }
nginx의 비표준 오류 코드인 444를 반환하여 nginx가 브라우저에서 연결을 끊도록 합니다
위치 일치 논리위치 구문 분석
location optional_modifier location_match { ... }
사용 가능한 수정자는 다음과 같습니다
판단 규칙 1. nginx는 먼저 접두사를 기반으로 위치 일치를 확인합니다(즉, 정규 표현식을 포함하지 않는 일치)
2. 요청한 URL과 완전히 일치하는 = 수정자를 사용하는 위치 블록이 있는 경우 즉시 위치 응답을 사용합니다. 요청
3. = 수정자와 일치하는 위치 블록이 발견되지 않으면 정확하지 않은 접두사가 계속 계산되고, 주어진 URI를 기반으로 가장 긴 일치 접두사가 발견된 후 다음 처리가 수행됩니다.
(1) 가장 긴 일치 위치에 ^~ 수정자가 있는 경우 nginx는 요청에 응답하기 위해 즉시 이 위치를 사용합니다
(2) 가장 긴 일치 위치에 ^~ 수정자가 없는 경우 nginx는 임시로 해당 위치를 저장합니다.
4. 가장 긴 일치 접두사 위치 블록을 결정하고 저장한 후 nginx는 정규식이 일치하는 경우 계속해서 정규식 일치 위치를 확인합니다. 요구사항에 따라 선택됩니다. 요청한 uri와 일치하는 첫 번째 정규식 위치를 사용하여 요청에 응답합니다
5. 요청한 uri와 일치하는 정규식 위치를 찾을 수 없는 경우 이전에 저장된 가장 긴 접두사 위치입니다. 요청
보충 에 응답하는 데 사용됩니다.일반적으로 요청에 응답하기 위해 특정 위치를 선택하면 다른 위치에 관계없이 해당 위치 내에서 요청이 처리됩니다. 그러나 해당 위치의 특정 지침은 다음과 같은 새로운 위치 일치를 트리거합니다. 1 ) try_files
(2) rewrite
(3) error_page
위 내용은 Nginx에서 서버와 위치의 일치 논리는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

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

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

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

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

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

뜨거운 주제











Tomcat 서버가 외부 네트워크에 액세스하도록 허용하려면 다음을 수행해야 합니다. 외부 연결을 허용하도록 Tomcat 구성 파일을 수정합니다. Tomcat 서버 포트에 대한 액세스를 허용하는 방화벽 규칙을 추가합니다. Tomcat 서버 공용 IP에 대한 도메인 이름을 가리키는 DNS 레코드를 만듭니다. 선택 사항: 역방향 프록시를 사용하여 보안 및 성능을 향상합니다. 선택 사항: 보안 강화를 위해 HTTPS를 설정합니다.

ThinkPHP Framework를 로컬에서 실행하는 단계: ThinkPHP Framework를 로컬 디렉터리에 다운로드하고 압축을 풉니다. ThinkPHP 루트 디렉터리를 가리키는 가상 호스트(선택 사항)를 만듭니다. 데이터베이스 연결 매개변수를 구성합니다. 웹 서버를 시작합니다. ThinkPHP 애플리케이션을 초기화합니다. ThinkPHP 애플리케이션 URL에 접속하여 실행하세요.

"Welcome to nginx!" 오류를 해결하려면 가상 호스트 구성을 확인하고, 가상 호스트를 활성화하고, Nginx를 다시 로드하고, 가상 호스트 구성 파일을 찾을 수 없으면 기본 페이지를 만들고, Nginx를 다시 로드해야 합니다. 그러면 오류 메시지가 나타납니다. 사라지고 웹사이트는 정상적으로 표시됩니다.

HTML 파일을 URL로 변환하려면 다음 단계를 포함하는 웹 서버가 필요합니다. 웹 서버를 얻습니다. 웹 서버를 설정합니다. HTML 파일을 업로드하세요. 도메인 이름을 만듭니다. 요청을 라우팅합니다.

Node.js 프로젝트의 서버 배포 단계: 배포 환경 준비: 서버 액세스 권한 획득, Node.js 설치, Git 저장소 설정. 애플리케이션 빌드: npm run build를 사용하여 배포 가능한 코드와 종속성을 생성합니다. Git 또는 파일 전송 프로토콜을 통해 서버에 코드를 업로드합니다. 종속성 설치: SSH를 서버에 연결하고 npm install을 사용하여 애플리케이션 종속성을 설치합니다. 애플리케이션 시작: node index.js와 같은 명령을 사용하여 애플리케이션을 시작하거나 pm2와 같은 프로세스 관리자를 사용합니다. 역방향 프록시 구성(선택 사항): Nginx 또는 Apache와 같은 역방향 프록시를 사용하여 트래픽을 애플리케이션으로 라우팅합니다.

Dockerfile에서 가장 일반적으로 사용되는 지침은 다음과 같습니다. FROM: 새 이미지 생성 또는 새 이미지 파생 RUN: 명령 실행(소프트웨어 설치, 시스템 구성) COPY: 로컬 파일을 이미지에 복사 ADD: COPY와 유사하며 자동으로 압축을 풀 수 있습니다. tar 아카이브 또는 URL 파일 얻기 CMD: 컨테이너가 시작될 때 명령 지정 EXPOSE: 컨테이너 수신 포트 선언(공개는 아님) ENV: 환경 변수 설정 VOLUME: 호스트 디렉터리 또는 익명 볼륨 마운트 WORKDIR: 작업 디렉터리 설정 컨테이너 ENTRYPOINT: 컨테이너가 시작될 때 실행할 항목을 지정합니다. 실행 파일(CMD와 유사하지만 덮어쓸 수 없음)

예, Node.js는 외부에서 액세스할 수 있습니다. 다음 방법을 사용할 수 있습니다. Cloud Functions를 사용하여 함수를 배포하고 공개적으로 액세스할 수 있도록 합니다. Express 프레임워크를 사용하여 경로를 만들고 끝점을 정의합니다. Nginx를 사용하여 Node.js 애플리케이션에 대한 프록시 요청을 역방향으로 수행합니다. Docker 컨테이너를 사용하여 Node.js 애플리케이션을 실행하고 포트 매핑을 통해 노출합니다.

PHP 웹 사이트를 성공적으로 배포하고 유지하려면 다음 단계를 수행해야 합니다. 웹 서버(예: Apache 또는 Nginx) 선택 PHP 설치 데이터베이스 생성 및 PHP 연결 서버에 코드 업로드 도메인 이름 및 DNS 모니터링 웹 사이트 유지 관리 설정 단계에는 PHP 및 웹 서버 업데이트, 웹 사이트 백업, 오류 로그 모니터링 및 콘텐츠 업데이트가 포함됩니다.
