Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

nginx

Вопросы без привязки к версии. Установлена авточистка (2 года).
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ | Как задавать вопросы | Как устанавливать расширения

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Vlad__
phpBB 2.0.7
Сообщения: 566
Стаж: 7 лет 3 месяца
Благодарил (а): 283 раза
Поблагодарили: 65 раз

nginx

Сообщение Vlad__ »

Имеется рабочий форум на стандартной связке lamp. Вычитал, что установка nginx перед апачем для статики дает выигрыш в скорости и улучшает защиту сайта от ддоса и прочего. Так ли это? Где можно почитать как установить nginx применительно к форуму phpbb и какие могут быть подводные камни?
Аватара пользователя
Mr. Anderson
phpBB Guru
phpBB Guru
Сообщения: 7522
Стаж: 20 лет
Откуда: СССР
Благодарил (а): 6 раз
Поблагодарили: 154 раза
Контактная информация:

Re: nginx

Сообщение Mr. Anderson »

Vlad__ писал(а): Где можно почитать
Например в гугле :)
Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 5270
Стаж: 19 лет 2 месяца
Откуда: Питер
Благодарил (а): 188 раз
Поблагодарили: 800 раз
Контактная информация:

Re: nginx

Сообщение Siava »

Vlad__, лучше всего полностью избавиться от Apache и использовать nginx + php-fpm.
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb 2.0.x 3.5.x)
Vlad__
phpBB 2.0.7
Сообщения: 566
Стаж: 7 лет 3 месяца
Благодарил (а): 283 раза
Поблагодарили: 65 раз

Re: nginx

Сообщение Vlad__ »

Siava писал(а): лучше всего полностью избавиться от Apache и использовать nginx + php-fpm.
Это я понимаю. Но боюсь это делать на рабочем настроенном форуме, чтобы потом не вылавливать косяки. Да и пока не готов к этому умственно ;)
Может ткнете в мануал по настройке этой связки применительно к нашим форумам. Если есть такой. Со всеми возможными подводными камнями.
Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 5270
Стаж: 19 лет 2 месяца
Откуда: Питер
Благодарил (а): 188 раз
Поблагодарили: 800 раз
Контактная информация:

Re: nginx

Сообщение Siava »

Vlad__, например, тут достаточно подробно описано.
Экспериментировать лучше на виртуалке (VirtualBox). Когда придёт осознание что к чему, то перенесёте на рабочий сервер.
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb 2.0.x 3.5.x)
iks_
phpBB 1.0.0
Сообщения: 3
Стаж: 7 лет 5 месяцев
Поблагодарили: 1 раз

Re: nginx

Сообщение iks_ »

Стоит сразу учесть что о настройках через .htaccess придется сразу забыть. Сам давно отказался от Apache, всех нюансов настройке форума уже не припомню, но тут одну из проблем с которой столкнулся описал.
И так небольшие мелочи конечно, которые довольно легко решаются.

Приведу некоторые свои настройки nginx
Скрытый текст
nginx.conf

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

# forum
server {
    listen  80;
	listen *:443 ssl;
    server_name forum.site.ru www.forum.site.ru;
	include /etc/nginx/common/rewriteHTTPS;
	set $rootDir /home/user/public_html/site.ru/forum/;
	include /etc/nginx/common/sites;

    access_log  /home/user/logs/nginx-logs/forum.site.ru.access_log combined;
    error_log   /home/user/logs/nginx-logs/forum.site.ru.error_log;
}
/etc/nginx/common/rewriteHTTPS

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

# Если не защищенное соединение, перенаправляем на HTTPS
if ( $scheme = "http" ) {
	rewrite ^/(.*)$ https://$host/$1 permanent;
}
/etc/nginx/common/sites

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

# Кодировка по-умолчанию
charset utf-8;

# Включаем SSI
ssi on;

# Прочие настройки
client_max_body_size			100m;
client_body_buffer_size			128k;
client_header_timeout			3m;
client_body_timeout				3m;
send_timeout					3m;
client_header_buffer_size		1k;
large_client_header_buffers		4 16k;
# Блокируем Referrer-спам
if ( $http_referer ~* (babes|forsale|girl|jewelry|love|nudit|organic|poker|porn|sex|teen) ) { return 403; }


#   Основной каталог
root $rootDir;

location / {
	root $rootDir;

	index index.shtml index.php index.html index.htm;

	#   Для  работы API
	rewrite ^/api/(.*)$ /api.php?_d=$1&ajax_custom=1&$args last;

	#   Логика поиска скрипта по порядку: файл, папка, скрипт
	try_files $uri $uri/ @fallback;
}

#   Правиле rewrite для модуля SEO
location @fallback {
	rewrite  ^(.*)$ /index.php?$args last;
}

#   Настройки статики, первое правило
location ~* \.(jpeg|ico|jpg|gif|png|css|js|pdf|txt|tar|gz|wof|csv|zip|xml|yml) {
	access_log off;
	#   Правило поиска статических файлов. Если файл не находится по адресу директории, то ищем файл по правилу @statics.
	try_files $uri @statics;
	expires 14d;
	add_header Access-Control-Allow-Origin *;
	add_header Cache-Control public;
	root $rootDir;
}

#   Правило поиска статических файлов для витрин. Например, если у Вас две витрины в разных подпапках: site.ru и site.ru/shop/
location @statics {
	rewrite ^/(\w+)/(.*)$ /$2 break;
	access_log off;
	rewrite_log off;
	expires 14d;
	add_header Cache-Control public;
	add_header Access-Control-Allow-Origin *;
	root $rootDir;
}

#   Обрабатываем PHP скрипты. Магия
location ~ \.php$ {
	root $rootDir;
	proxy_read_timeout 61;
	fastcgi_read_timeout 61;
	try_files $uri $uri/ =404;
	#   Путь до сокета демона PHP-FPM
	fastcgi_pass 127.0.0.1:9009;
#	fastcgi_pass unix:/var/run/php5-fpm.sock;
	fastcgi_index index.php;
	fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
	include fastcgi_params;
}

#
#   Ограничиваем возвожность запуска php в каталогах. Для безопасности.
#

location /app/ {
	deny all;

	#   Разрешаем запуск скрипта обмена данными с 1С.
	location ^~ /app/addons/rus_exim_1c/exim_1c.php {
		allow all;
	}
}

#   Разрешаем запуск скриптов способов оплаты
location /app/payments/ {
	allow all;
}

#   Запрещаем PHP в папке /design
location /design/ {
allow all;
	location ~* \.([tT][pP][lL]|[pP][hH][pP].?)$ {
		deny all;
	}
	}

#   Запрещаем PHP в папке /images
location /images/ {
	allow all;
	location ~* \.([pP][hH][pP].?)$ {
		deny all;
	}
}

# Блокируй хотлинк
location ~* ^/img/(.+\.(jpg|jpeg|gif|png))$ {
	root $rootDir;
	valid_referers none blocked server_names ~\.site\.;
	if ($invalid_referer) {
		rewrite ^ img/zastavka.png last;
	}
}

#   Разрешаем только статику в папке /var
location /var/ {
	deny all;
	location ~* \.(js|css|png|jpg|gz|xml|yml)$ {
		allow all;
		expires 1M;
		add_header Cache-Control public;
		add_header Access-Control-Allow-Origin *;
	}
}

#   Закрываем доступ к бэкапам базы данных (папка /var/database/) с наружи
location /var/database/ {
	deny all;
}

#   Хранилище резервных копий шаблонов
location /var/skins_repository/ {
	allow all;
	location ~* \.([tT][pP][lL]|[pP][hH][pP].?)$ {
		deny all;
	}
}

#   Обработка API
location ~* api/ {
	rewrite ^/api/(.*)$ /api.php?_d=$1&ajax_custom=1&$args last;
}

#   Запрвещаем .htaccess и .htpasswd
location ~ /\.ht {
	deny  all;
}
Конечно не все вам пригодиться, но может что-то поможет...
Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 5270
Стаж: 19 лет 2 месяца
Откуда: Питер
Благодарил (а): 188 раз
Поблагодарили: 800 раз
Контактная информация:

Re: nginx

Сообщение Siava »

В папке docs форума есть пример конфига nginx применительно для phpbb.
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb 2.0.x 3.5.x)
Аватара пользователя
LONER
phpBB 3.0.0 RC1
Сообщения: 1486
Стаж: 8 лет 2 месяца
Благодарил (а): 164 раза
Поблагодарили: 247 раз

Re: nginx

Сообщение LONER »

Siava писал(а): пример конфига nginx применительно для phpbb
Re: Вышел phpBB 3.2.0 RC2
Правильно заданный вопрос и описание проблемы - 70% их решения...
LBeaver
phpBB 1.4.4
Сообщения: 153
Стаж: 9 лет 5 месяцев
Благодарил (а): 47 раз
Поблагодарили: 44 раза
Контактная информация:

Re: nginx

Сообщение LBeaver »

iks_, перенаправление с HTTP на HTTPS сами разработчики рекомендуют делать через контекст server и вообще не советуют злоупотреблять директивой if (If Is Evil). Выглядит это примерно так:

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

server {
	listen 443 ssl;
	server_name example.ru;
	…
}

# Включаем переадресацию HTTP → HTTPS для одного сайта
server {
	server_name example.ru;
	return 301 https://example.ru$request_uri;
}

# Или переводим вообще все сайты на HTTPS
server {
	listen 80 default_server;
	return 301 https://$host$request_uri;
}
iks_
phpBB 1.0.0
Сообщения: 3
Стаж: 7 лет 5 месяцев
Поблагодарили: 1 раз

Re: nginx

Сообщение iks_ »

LBeaver ну если посмотрите приведенный мною скрипт, то увидите что он и сделан через server, обратите внимание на

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

include /etc/nginx/common/rewriteHTTPS;
Подгрузка файла сделана из server, да и остальные файлы, которые используются на разных сайтах, не во всех сайтах включается перенаправление, поэтому и сделан отдельный файл (есть свои нюансы у меня).
У меня nginx.conf разнесен по отдельным файлам для удобства, чтоб не писать один и тот-же код. Ну лентяй я что тут поделать ;)
Vlad__
phpBB 2.0.7
Сообщения: 566
Стаж: 7 лет 3 месяца
Благодарил (а): 283 раза
Поблагодарили: 65 раз

Re: nginx

Сообщение Vlad__ »

Не подскажите какие параметры лучше выставить для форума с большим графическим контентом в виде картинок?
Сейчас стоят такие, но все равно периодически (прикручен fail2ban) банятся адреса 66.102.9.ХХХ (вроде Google) на обращениях по ссылкам к картинкам, хотя googlуbot пропускает. Я так понимаю нужно увеличить лимиты или прописать "безлимитный" диапазон адресов. Какие у гугла? И гугл ли это?

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

limit_req_zone $binary_remote_addr zone=dynamic:10m rate=10r/s;

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

limit_req zone=dynamic burst=15;
  limit_req_status 503;
  error_page 410 = @nolimit;
  if ($http_user_agent ~ Googlebot|YandexBot|bingbot|Baiduspider) {
  return 410;
  }
Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 5270
Стаж: 19 лет 2 месяца
Откуда: Питер
Благодарил (а): 188 раз
Поблагодарили: 800 раз
Контактная информация:

Re: nginx

Сообщение Siava »

Картинки и другую статику вовсе нет смысла ограничивать по запросам в секунду :roll:
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb 2.0.x 3.5.x)
Vlad__
phpBB 2.0.7
Сообщения: 566
Стаж: 7 лет 3 месяца
Благодарил (а): 283 раза
Поблагодарили: 65 раз

Re: nginx

Сообщение Vlad__ »

Siava писал(а): Картинки и другую статику вовсе нет смысла ограничивать по запросам в секунду :roll:
У меня и не ограничено. Картинки выдаются /download/file.php?id=$1; а это вроде не статика.
Vlad__
phpBB 2.0.7
Сообщения: 566
Стаж: 7 лет 3 месяца
Благодарил (а): 283 раза
Поблагодарили: 65 раз

Re: nginx

Сообщение Vlad__ »

Вот мои конфиги нгинкса. Делалось методом научного тыка на основе примерного конфига в дистрибутиве форума 3.2. Уважаемые спецы, посмотрите пожалуйста - накосячил я или нет и что исправить и поправить? Все в принципе работает, только проблемы с сохранением ббкодов в админке - выбрасывает еррор 502.

myforum.com.conf

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

server {
    listen 443 ssl;
    server_name myforum.com;

    # certs sent to the client in handshake are concatenated in ssl_certificate
    ssl_certificate /etc/letsencrypt/live/myforum.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/myforum.com/privkey.pem;
    ssl_session_timeout 1d;
    ssl_session_cache shared:SSL:50m;
    ssl_session_tickets off;

    # secure configuration
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
    ssl_prefer_server_ciphers on;

    expires     epoch;   

    root /var/www/myforum.com;
    index index.php index.html index.htm index.nginx-debian.html;

    access_log off;
    error_log /var/log/nginx/error.log error;

    # For extension SEO Images in Attachment.
    rewrite ^/thumb/(\d+)\.(gif|jpg|jpeg|bmp|png|tiff|tif|tga)$ /download/file.php?id=$1&t=1;
    rewrite ^/pic/(\d+)\.(gif|jpg|jpeg|bmp|png|tiff|tif|tga)$ /download/file.php?id=$1&mode=view;
    rewrite ^/inline/(\d+)\.(gif|jpg|jpeg|bmp|png|tiff|tif|tga)$ /download/file.php?id=$1;
    rewrite ^/img/(\d+)\.(gif|jpg|jpeg|bmp|png|tiff|tif|tga)$ /download/file.php?id=$1; 

    if ($request_uri ~ "^/index.(php|html?)") {
    rewrite ^ /$1 permanent;
    }

    if (!-e $request_filename){ 
    rewrite ^(.*)$ /app.php break; 
    } 

    # Antibot
    if ($http_user_agent ~* "InAGist|naver|Livelapbot|Slurp|wordpress|FlipboardProxy|SemrushBot|SolomonoBot|AhrefsBot|SearchBot|magpie|urllib|peerindex|Configuration|Kimengi|Subscribe|Crowsnest|Jakarta|crawler|findlinks|Browserlet|Java|LibreOffice|QuerySeekerSpider|Powermarks|CodeGator|xpymep|MJ12bot|Butterfly|UnwindFetchor|JS-Kit|rogerbot|MetaURI|NING|PaperLiBot|facebookexternalhit|ia_archiver|Slingstone|linkfluence|uMBot|Twitterbot|TweetmemeBot") {
    return 403;
    }

    location / {
    try_files $uri $uri/ =404;
    limit_req zone=dynamic burst=10;
    limit_req_status 503;
    error_page 410 = @nolimit;
    }

    location ~* \.(jpg|jpeg|gif|png|swf|tiff|swf|flv)$ {
        expires 4M;
        add_header Cache-Control public;
    } 

    location ~* \.(css|js|ico) {
        expires 2M;
        add_header Cache-Control private;
    }

    # Deny access to internal phpbb files.
    location ~ /(config\.php|common\.php|includes|cache|files|store|images/avatars/upload|ext/bb3mobi/imgposts/images) {
        deny all;
        # deny was ignored before 0.8.40 for connections over IPv6.
        # Use internal directive to prohibit access on older versions.
        internal;
    }

    # Pass the php scripts to fastcgi server specified in upstream declaration.
    location ~ \.php(/|$) {
        # Unmodified fastcgi_params from nginx distribution.
        include fastcgi_params;
        # Necessary for php.
        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_cache MYCACHE; 
        fastcgi_cache_valid 200 4h;
        try_files $uri $uri/ /app.php$is_args$args;
        fastcgi_pass php;   
   }

    # Correctly pass scripts for installer
    location /install/ {
        # phpBB uses index.htm
        try_files $uri $uri/ @rewrite_installapp;
        # Pass the php scripts to fastcgi server specified in upstream declaration.
        location ~ \.php(/|$) {
        # Unmodified fastcgi_params from nginx distribution.
        include fastcgi_params;
        # Necessary for php.
        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_pass php;
     }
   }

    location @rewrite_installapp {
        rewrite ^(.*)$ /install/app.php/$1 last;
   }

    # Deny access to version control system directories.
    location ~ /\.svn|/\.git {
        deny all;
        internal;
   } 

    location ~ /\.ht {
        deny all;
   }

}

upstream php {
        server unix:/var/run/php/php7.1-fpm.sock;
       }

nginx.conf

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

user              www-data    www-data;

worker_processes  auto;

worker_priority   -10;

pid /var/run/nginx.pid;

error_log  /var/log/nginx/error.log  warn;


events {
    worker_connections              2048;
    accept_mutex                    on;
    multi_accept                    on;
}

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

    reset_timedout_connection       on;
    server_tokens                   off;

    log_format                      main            '$remote_addr - [$time_local] '
                                                    '$host "$request" $status $bytes_sent '
                                                    '"$http_referer" "$http_user_agent" '
                                                    '"$gzip_ratio" $upstream_response_time';

    sendfile                        on;
    tcp_nopush                      on;
    tcp_nodelay                     on;

    keepalive_timeout               65;

    client_max_body_size            512m;

    server_names_hash_max_size      1024;
    server_names_hash_bucket_size   128;

    port_in_redirect                off;

    
    gzip                            on;
    gzip_static                     on;
    gzip_vary                       on;
    gzip_http_version               1.1;
    gzip_min_length                 700;
    gzip_comp_level                 6;
    gzip_disable                    "MSIE [1-6]\.";

    charset                         utf-8;
    index                           index.php index.html index.htm;

    access_log                      off;

    error_log                       /dev/null;

    set_real_ip_from               100.100.100.100/32;  
    real_ip_header                 X-Real-IP;
 
    limit_conn_zone $binary_remote_addr zone=perip:10m;    limit_conn perip 100;
    limit_conn_status 503;

    limit_req_zone $binary_remote_addr zone=dynamic:10m rate=10r/s;

    include                         /etc/nginx/conf.d/*.conf;
    include                         /etc/nginx/sites-enabled/*.conf;

}

cache.conf

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

fastcgi_cache_path /var/cache/nginx levels=1:2 keys_zone=MYCACHE:10m inactive=4h;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
Аватара пользователя
nissin
phpBB 3.0.4
Сообщения: 2208
Стаж: 16 лет 3 месяца
Откуда: Павлодар
Благодарил (а): 7 раз
Поблагодарили: 338 раз
Контактная информация:

Re: nginx

Сообщение nissin »

Vlad__,
По мелочи, рекомендую включить http2
https://nginx.org/ru/docs/http/ngx_http_v2_module.html
и проверить наличие поддержки ALPN (OpenSSL версии 1.0.2).

по общей настройке https:
https://mozilla.github.io/server-side-t ... generator/
Всё повторяется. nurlan.info
Ответить

Вернуться в «phpBB-пространство»