Оптимальный NGINX config для phpBB

Проблемы с установкой или работой phpBB 3.3.x? Получите помощь здесь!
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB 3.1.x/3.2.x | FAQ | Как задавать вопросы | Как устанавливать расширения

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
Сева
phpBB 1.4.1
Сообщения: 49
Стаж: 4 месяца
Благодарил (а): 1 раз
Поблагодарили: 1 раз

Оптимальный NGINX config для phpBB

Сообщение Сева »

Здравия всем!
Помогите пожалуйста с конфигурацией NGINX для phpBB
Исходные данные:
Linux Rocky 9, PHP Version 8.4.2, MySQL 8.0.36, phpBB 3.3.14, NGINX 1.26.2
PHP-FPM 8.4.2 (собрана вместе с PHP), Sphinx 3.7.1

Вот пока что какой у меня /etc/nginx/nginx.conf

Код: Выделить всё

user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log notice;
pid        /run/nginx.pid;

# Load dynamic modules. Now it's 0 of them )
#include /usr/lib64/nginx/modules/*.conf;

events {
    worker_connections  1024;
}

http {
  include       /etc/nginx/mime.types;
  default_type  application/octet-stream;

  log_format  main  '$remote_addr - $remote_user [$time_local] $document_root$fastcgi_script_name > "$request" '
                    '$status $body_bytes_sent "$http_referer" '
                    '"$http_user_agent" "$http_x_forwarded_for"';

  access_log  /var/log/nginx/access.log main;

  sendfile       on;
  tcp_nopush     on;
  tcp_nodelay    on;
  keepalive_timeout  65;
  types_hash_max_size 2048;

  fastcgi_pass_request_body   on;
  client_body_in_file_only    off;
  client_max_body_size 128m;

  gzip                off;
  gzip_static         off;
  gzip_vary           off;

  server {
    listen          [::]:80 default_server;
    listen               80 default_server;
    server_name     _;
    return          307 https://$host$request_uri;
  }
  server {
    server_name  forum.our_domain;
    root   /our_domain/forum;
    include /etc/nginx/forum.conf;
  }
  server {
    server_name  test.our_domain;
    root   /our_domain/test;
    include /etc/nginx/forum.conf;
  }
}
Включаемая в оба (основной и тестовый) форумы часть /etc/nginx/forum.conf;
выглядит так:

Код: Выделить всё

    listen        443 ssl;
    http2 on;

    index  index.php;

    # add Strict-Transport-Security to prevent man in the middle attacks
    add_header Strict-Transport-Security "max-age=63072000" always;
    access_log  /var/log/nginx/forum.access.log  main;

    ssl_certificate /etc/letsencrypt/live/privet.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/privet.com/privkey.pem; # managed by Certbot

    location = /favicon.ico {
      log_not_found off;
      access_log off;
    }

    location = /robots.txt {
      allow all;
      log_not_found off;
      access_log off;
    }


    # redirect server error pages to the static page /50x.html
    error_page   500 502 503 504  /50x.html;

    location / {
      try_files $uri $uri/ @rewriteapp =404;
      # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
      location ~ \.php$ {
        include fastcgi.conf;
      fastcgi_split_path_info ^(.+\.php)(/.*)$;
      fastcgi_param PATH_INFO $fastcgi_path_info;
      fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
      fastcgi_param DOCUMENT_ROOT $realpath_root;
        fastcgi_pass   127.0.0.1:9000;
        #fastcgi_index  index.php;
        #try_files $uri $uri/ /app.php$is_args$args;
        #try_files $uri $uri/ =404;
        fastcgi_intercept_errors on;
        #include        fastcgi_params;
      }

      # Deny access to internal phpbb files.
      location ~ /(config\.php|common\.php|cache|files|images/avatars/upload|includes|(?<!ext/)phpbb(?!\w+)|store|vendor) {
        deny all;
        internal;
      }
    }
    location @rewriteapp {
      rewrite ^(.*)$ /app.php/$1 last;
    }
Посоветуйте плиз, чего здесь не хватает, или что можно модифицировать и с какой целью.

Буду весьма признателен за вашу экспертизу и советы :hat
Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 5426
Стаж: 20 лет 3 месяца
Откуда: Питер
Благодарил (а): 177 раз
Поблагодарили: 749 раз

Re: Оптимальный NGINX config для phpBB

Сообщение Siava »

Сева писал(а): 28.01.2025 18:05 fastcgi_pass 127.0.0.1:9000;
У вас тут tcp-порт. Через сокет будет меньше задержка, следовательно быстрее.

Перенаправление на http 307 для несущественного домена.. Оптимальнее 444, возможно ошибаюсь.

Почему gzip отключен?

Отправлено спустя 1 минуту 26 секунд:
Вообще не существует оптимального конфига. У каждого он будет свой под конкретные задачи.
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb 2.0.x 3.5.x)
Аватара пользователя
Сева
phpBB 1.4.1
Сообщения: 49
Стаж: 4 месяца
Благодарил (а): 1 раз
Поблагодарили: 1 раз

Re: Оптимальный NGINX config для phpBB

Сообщение Сева »

Вчера попробовал поиграться с сокетами.
И что-то мне показалось, что с ним как-то медленней оно.

Я уже призабыл, как там взаимодействие проистекает, как именно сокет общение устроено.
Понятно, что без лишних сетевых рукопожатий.

Но случаем не через файл оно идёт? Ну то есть не через более медленный диск?
на Линухах ведь вские там /run /var/run - ониж через tmpfs, который использует swap, то есть диск.
Аватара пользователя
Сева
phpBB 1.4.1
Сообщения: 49
Стаж: 4 месяца
Благодарил (а): 1 раз
Поблагодарили: 1 раз

Re: Оптимальный NGINX config для phpBB

Сообщение Сева »

Для комбинации NGINX 1.26.2 и последней phpBB 3.3.14 в свете обнаруженных ошибок типа "rewrite or internal redirection cycle"
найдена вот какая конфигурация
это файл /etc/nginx/forum.conf

Код: Выделить всё

    listen        443 ssl;
    http2 on;

    index  index.php;

    # add Strict-Transport-Security to prevent man in the middle attacks
    add_header Strict-Transport-Security "max-age=63072000" always;
    access_log  /var/log/nginx/forum.access.log  main;

    ssl_certificate /etc/letsencrypt/live/myforum/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/myforum/privkey.pem; # managed by Certbot

    location = /favicon.ico {
      log_not_found off;
      access_log off;
    }

    location = /robots.txt {
      allow all;
      log_not_found off;
      access_log off;
    }

    # redirect server error pages to the static page /50x.html
    error_page   500 502 503 504  /50x.html;

    location / {
      try_files $uri $uri/ /app.php$is_args$args;
      # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
      location ~ \.php$ {
        include fastcgi.conf;

        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        fastcgi_param DOCUMENT_ROOT $realpath_root;

        try_files $uri $uri/ /app.php$is_args$args;
        #fastcgi_intercept_errors on;
        fastcgi_pass   127.0.0.1:9000;
      }

      # Deny access to internal phpbb files.
      location ~ /(config\.php|common\.php|cache|files|images/avatars/upload|includes|(?<!ext/)phpbb(?!\w+)|store|vendor) {
        deny all;
        internal;
      }
    }
    #Correctly pass scripts for installer
    location /install/ {
      try_files $uri $uri/ /install/app.php$is_args$args;
      location ~ \.php$ {
        include fastcgi.conf;

        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        fastcgi_param DOCUMENT_ROOT $realpath_root;

        try_files $uri $uri/ /install/app.php$is_args$args;
        #fastcgi_intercept_errors on;
        fastcgi_pass   127.0.0.1:9000;
      }
    }

Вернуться в «Поддержка phpBB 3.3.x»