콘텐츠로 건너뛰기
  • 홈
  • 카테고리
  • 최근
  • 태그
  • 인기
  • 사용자
  • 그룹
축소
브랜드 로고

AskFront 포럼

  1. 홈
  2. Platform (플랫폼)
  3. CMS (콘텐츠 관리 시스템)
  4. NodeBB Nginx Configuration Optimization 엔진엑스 성능 최적화

NodeBB Nginx Configuration Optimization 엔진엑스 성능 최적화

예약됨 고정됨 잠김 이동됨 CMS (콘텐츠 관리 시스템)
nginxnodebb최적화
1 게시물 1 작성자 138 조회수
  • 오래된 순
  • 최신 순
  • 가장 많은 투표
답글
  • 토픽으로 답글
로그인 후 답글 작성
이 토픽은 삭제되었습니다. 토픽 관리 권한이 있는 사용자만 볼 수 있습니다.
  • navystackN 오프라인
    navystackN 오프라인
    navystack
    전역 중재자
    에 작성함 마지막 수정자: askfront
    #1

    Nodebb 성능 최적화를 위한 빠른 요약

    Nginx는 정적 파일을 직접 제공하고, 동적 요청은 Node.js 서버로 프록시

        location /socket.io/ {
            proxy_pass http://nodes;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            add_header pushed "wss";
         }
    
        location @nodebb {
            proxy_pass http://nodes;
        }
        
        
        
        location ~ ^/assets/(.*) {
            root /usr/src/app/;
        
            try_files /build/public/$1 /public/$1 @nodebb;
        
            add_header pushed "assets";
        
            add_header Cache-Control "max-age=86400";  # 1 day
        
        }
        
        
        
        location /plugins/ {
            root /usr/src/app/build/public;
            add_header pushed "plugins";
            try_files $uri @nodebb;
            add_header Cache-Control "max-age=86400";  # 1 day
        }
        
        
        
        location / {
        
            proxy_pass http://nodes;
        
            add_header pushed "main";
        
        }
    
      nginx:
        container_name: nginx-nodebb
        image: nginx:latest
        logging:
          driver: json-file
          options:
            tag: '{{.ImageName}}|{{.Name}}|{{.ImageFullID}}|{{.FullID}}'
            max-size: '10m'
            max-file: 100
        restart: unless-stopped
        volumes:
          - nodebb-build:/usr/src/app/build:ro
          - nodebb-uploads:/usr/src/app/public/uploads:ro
          - nodebb-modules:/usr/src/app/node_modules:ro     
          - ./nginx:/etc/nginx/conf.d/
        networks:
          - internal
          - traefik-network
        depends_on:
          - nodebb
    
    

    default.conf

    upstream nodes {
        ip_hash;
        server nodebb-askfront:4567;
        keepalive 32;
    }
    
    server {
        listen 80;
        server_name _;
    
        set_real_ip_from 0.0.0.0/0;
        real_ip_header X-Forwarded-For;
        real_ip_recursive on;
    
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header Content-Disposition "attachment";
    
        proxy_redirect off;
        proxy_http_version 1.1;
    
        proxy_hide_header X-Powered-By;
        proxy_hide_header X-Dns-Prefetch-Control;
        proxy_hide_header X-Download-Options;
    
        location /socket.io/ {
            proxy_pass http://nodes;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            add_header pushed "wss";
    
        }
    
        location @nodebb {
            proxy_pass http://nodes;
        }
    
        location ~ ^/assets/(.*) {
            root /usr/src/app/;
            try_files /build/public/$1 /public/$1 @nodebb;
            add_header pushed "assets";
            add_header Cache-Control "max-age=86400";  # 1 day
        }
    
        location /plugins/ {
            root /usr/src/app/build/public;
            add_header pushed "plugins";
            try_files $uri @nodebb;
            add_header Cache-Control "max-age=86400";  # 1 day
        }
    
        location / {
            proxy_pass http://nodes;
            add_header pushed "main";
        }
    }
    
    
    
    1. upstream nodes: Node.js 서버의 업스트림을 정의.
      ip_hash는 세션 퍼시스턴스를 제공하기 위해 클라이언트 IP를 기반으로 한 서버로 트래픽을 라우팅

    2. server: HTTP 서버 블록을 정의. 포트 80에서 리스닝하며, 모든 도메인을 허용.
      (상황에 맞게 적절하게 수정)

    3. proxy_set_header: 프록시로 전달되는 요청 헤더를 설정. 실제 IP 주소와 포트, 프로토콜 등을 설정.

    4. proxy_hide_header: 프록시 응답에서 특정 헤더를 숨김.

    5. proxy_redirect: 프록시 리디렉션을 비활성화.

    6. gzip 및 brotli: Gzip 및 Brotli 압축을 사용하여 지정된 MIME 타입의 응답을 압축합니다. (nodebb 자체가 요청 횟수가 많으므로 최대한 적정한 크기만 압축)

    7. location 블록들: URL 경로에 따라 요청을 처리.

    • location @nodebb: @nodebb라는 이름의 location 블록으로 요청을 전달.
      프록시 패스를 사용하여 Node.js 서버로 요청을 전달.

    • location ~ ^/assets/(.*): 정규 표현식을 사용하여 URL 경로가 /assets/로 시작하는 요청을 처리.
      이 경우에는 정적 파일을 제공하기 위해 지정된 디렉토리에서 파일을 찾고, 없으면 Node.js 서버로 요청을 전달.

    • location /plugins/: /plugins/의 요청을 처리.
      이 경우에는 정적 파일을 제공하기 위해 지정된 디렉토리에서 파일을 찾고, 없으면 Node.js 서버로 요청을 전달.

    • location /: 기본적으로 모든 요청은 Node.js 서버로 전달.

    1 답글 마지막 답글
    1
    답글
    • 토픽으로 답글
    로그인 후 답글 작성
    • 오래된 순
    • 최신 순
    • 가장 많은 투표


    • 로그인

    • 계정이 없으신가요? 등록

    • 검색하려면 로그인하거나 등록하세요.
    이용약관
    개인정보 처리방침
    • 첫 게시물
      마지막 게시물
    0
    • 홈
    • 카테고리
    • 최근
    • 태그
    • 인기
    • 사용자
    • 그룹