운영 및 유지보수 엔진스 Nginx의 동적 모듈 로딩 구성을 구현하는 방법

Nginx의 동적 모듈 로딩 구성을 구현하는 방법

Nov 08, 2023 pm 02:23 PM
nginx 기준 치수 동적

Nginx의 동적 모듈 로딩 구성을 구현하는 방법

Nginx는 고성능 웹 서버이자 역방향 프록시 소프트웨어입니다. 최근 출시된 Nginx 버전 1.9.11 이상에서는 동적 모듈 로딩을 지원합니다. 이 새로운 기능을 통해 사용자는 Nginx를 다시 컴파일하고 다시 설치하지 않고도 새로운 동적 모듈을 추가하여 기능을 확장하고 사용자 정의할 수 있습니다. 이 기사에서는 Nginx에서 동적 모듈 로딩 구성을 구현하는 방법을 소개하고 구체적인 코드 예제를 제공합니다.

Nginx 동적 모듈 로딩의 원칙은 새로운 컴파일 모드("--add-dynamic-module=module_path")를 통해 동적 모듈에 대한 지원을 켜는 것입니다. 이 컴파일 모드를 사용하면 컴파일에서 동적 링크 라이브러리(.so) 파일이 생성됩니다. 이 동적 링크 라이브러리는 Nginx가 시작되고 실행될 때 동적으로 로드 및 언로드될 수 있습니다. 정적 모듈과 비교하여 동적 모듈은 유연성이 더 좋습니다.

구체적인 구현 방법은 다음과 같습니다.

1. 동적 모듈 소스 코드 작성

헤더 헤더 추가 구현을 예로 들면, 헤더 헤더는 웹 애플리케이션 자체에서 요청 및 응답의 헤더를 참조합니다. Header 헤더 추가 기능은 제공하지 않으나, Custom 모듈을 통해 구현할 수 있습니다. 다음 코드는 헤더 헤더를 추가하는 간단한 예입니다.

#include <ngx_config.h>
#include <ngx_core.h>
#include <ngx_http.h>

static ngx_int_t ngx_http_add_header_handler(ngx_http_request_t *r) {
    ngx_table_elt_t *h;
    h = ngx_list_push(&r->headers_out.headers);
    h->hash = 1;
    ngx_str_set(&h->key, "MyHeader");
    ngx_str_set(&h->value, "Hello Nginx!");
    r->headers_out.content_length_n = sizeof("Hello Nginx!") - 1;
    ngx_http_clear_content_length(r);
    ngx_http_header_filter(r);
    ngx_http_send_header(r);
    return NGX_OK;
}

static ngx_int_t ngx_http_add_header_init(ngx_conf_t *cf) {
    ngx_http_handler_pt *h;
    ngx_http_core_main_conf_t *cmcf;
    cmcf = ngx_http_conf_get_module_main_conf(cf, ngx_http_core_module);
    h = ngx_array_push(&cmcf->phases[NGX_HTTP_CONTENT_PHASE].handlers);
    if(h == NULL) {
        return NGX_ERROR;
    }
    *h = ngx_http_add_header_handler;
    return NGX_OK;
}

static ngx_http_module_t ngx_http_add_header_module_ctx = {
    NULL, ngx_http_add_header_init, NULL, NULL, NULL, NULL, NULL, NULL
};

ngx_module_t ngx_http_add_header_module = {
    NGX_MODULE_V1, &ngx_http_add_header_module_ctx, NULL, NGX_HTTP_MODULE, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NGX_MODULE_V1_PADDING
};
로그인 후 복사

이 코드는 Nginx 사용자 정의 모듈 ngx_http_add_header_module을 구현합니다. 이 사용자 정의 모듈에는 ngx_http_add_header_handler 및 ngx_http_add_header_init라는 두 가지 기능이 있습니다. 전자는 헤더 헤더를 추가하는 특정 논리를 구현하는 데 사용됩니다. , 후자는 모듈을 초기화하는 데 사용됩니다. 각 모듈은 모듈 컨텍스트 ngx_http_add_header_module_ctx와 모듈의 버전 번호, 컨텍스트 및 기타 정보를 포함하는 ngx_module_t 구조 변수 ngx_http_add_header_module을 정의해야 합니다.

2. 동적 링크 라이브러리를 컴파일하고 생성합니다.

다음 명령을 사용하여 동적 링크 라이브러리를 생성하는 코드를 컴파일합니다.

./configure --prefix=/usr/local/nginx --add-dynamic-module=./src/http/modules/my_module && make && make install
로그인 후 복사

위 명령을 실행하면 Nginx의 HTTP 모듈 아래에 my_module 디렉터리가 생성됩니다. 동적 모듈 파일과 일부 필요한 소스 코드 및 헤더 파일을 빌드하는 데 사용되는 Makefile은 objs/ 디렉터리에 있습니다.

3. 동적 모듈 로드

Nginx 구성 파일 nginx.conf에 다음 코드를 추가하여 동적 링크 라이브러리를 로드합니다.

load_module modules/ngx_http_add_header_module.so;

http {
    server {
        listen 80;
        server_name myweb.com;
        location / {
            add_header MyHeader "Hello Nginx!";
            root /var/www/html;
        }
    }
}
로그인 후 복사

http 모듈 아래의 load_module 명령을 통해 ngx_http_add_header_module.so 동적 링크 라이브러리 파일을 로드합니다. 그런 다음 서버 블록을 정의하고 서버 블록에 위치 구성 항목을 지정하여 헤더 헤더를 추가합니다.

4. Nginx 다시 로드

다음 명령을 실행하여 Nginx 서버를 다시 로드하세요.

nginx -s reload
로그인 후 복사

이 명령은 구성을 다시 로드하고, Nginx를 다시 시작하고, Nginx 및 기타 작업을 종료할 수 있습니다.

이제 Nginx에서 동적 모듈 로딩 구성을 구현하는 프로세스가 완료되었습니다.

요약:

위의 소개를 통해 Nginx 1.9.11 이상 버전의 동적 모듈 로딩 구현 방법을 간략하게 이해할 수 있습니다. 구현 과정에서는 동적 모듈 소스 코드 작성, 동적 링크 라이브러리 컴파일 및 생성, 모듈 라이브러리 로드, Nginx 다시 로드를 순서대로 수행해야 합니다. 동적 모듈을 사용하면 사용자는 출시 후 단계에서 특정 기능을 개발할 수 있어 제품 출시가 더 빠르고 유연해집니다.

위 내용은 Nginx의 동적 모듈 로딩 구성을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

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

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

Tomcat 서버에 대한 외부 네트워크 액세스를 허용하는 방법 Tomcat 서버에 대한 외부 네트워크 액세스를 허용하는 방법 Apr 21, 2024 am 07:22 AM

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

thinkphp를 실행하는 방법 thinkphp를 실행하는 방법 Apr 09, 2024 pm 05:39 PM

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

nginx에 오신 것을 환영합니다! 어떻게 해결하나요? nginx에 오신 것을 환영합니다! 어떻게 해결하나요? Apr 17, 2024 am 05:12 AM

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

도커 컨테이너 간 통신 방법 도커 컨테이너 간 통신 방법 Apr 07, 2024 pm 06:24 PM

Docker 환경에는 공유 네트워크, Docker Compose, 네트워크 프록시, 공유 볼륨 및 메시지 큐의 5가지 컨테이너 통신 방법이 있습니다. 격리 및 보안 요구 사항에 따라 Docker Compose를 활용하여 연결을 단순화하거나 네트워크 프록시를 사용하여 격리를 높이는 등 가장 적절한 통신 방법을 선택하세요.

nodejs 프로젝트를 서버에 배포하는 방법 nodejs 프로젝트를 서버에 배포하는 방법 Apr 21, 2024 am 04:40 AM

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

HTML 파일에서 URL을 생성하는 방법 HTML 파일에서 URL을 생성하는 방법 Apr 21, 2024 pm 12:57 PM

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

phpmyadmin 설치에 실패하면 어떻게 해야 할까요? phpmyadmin 설치에 실패하면 어떻게 해야 할까요? Apr 07, 2024 pm 03:15 PM

실패한 phpMyAdmin 설치에 대한 문제 해결 단계: 시스템 요구 사항(PHP 버전, MySQL 버전, 웹 서버)을 확인하고 PHP 확장(mysqli, pdo_mysql, mbstring, token_get_all)을 활성화하고 구성 파일 설정(호스트, 포트, 사용자 이름, 비밀번호)을 확인합니다. 권한(디렉터리 소유권, 파일 권한), 방화벽 설정 확인(웹 서버 포트 허용 목록), 오류 로그 보기(/var/log/apache2/error.log 또는 /var/log/nginx/error.log) phpMyAdmin

Dockerfile에서 가장 일반적인 지침은 무엇입니까? Dockerfile에서 가장 일반적인 지침은 무엇입니까? Apr 07, 2024 pm 07:21 PM

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

See all articles