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

-
- phpBB 2.0.7
- Сообщения: 567
- Стаж: 8 лет 4 месяца
- Благодарил (а): 241 раз
- Поблагодарили: 52 раза
nginx
Имеется рабочий форум на стандартной связке lamp. Вычитал, что установка nginx перед апачем для статики дает выигрыш в скорости и улучшает защиту сайта от ддоса и прочего. Так ли это? Где можно почитать как установить nginx применительно к форуму phpbb и какие могут быть подводные камни?
-
- phpBB Guru
- Сообщения: 7522
- Стаж: 21 год 1 месяц
- Откуда: СССР
- Благодарил (а): 4 раза
- Поблагодарили: 94 раза
Re: nginx
Правила конференции (30.05.2011) | Общие ошибки новичков (07.11.2005) | Шаблон запроса | FAQ (phpBB 3.0.x) / Мини [FAQ] по phpBB 3.1.x
Последние и единственно актуальные на сегодня версии - 3.1.12 и 3.2.2!
Небесплатно накачаю ваш VPS/VDS/DS стероидами и заставлю ваши CMS летать =)
phpBB Guru blog | Тестируем phpBB 3.3 здесь! |
Последние и единственно актуальные на сегодня версии - 3.1.12 и 3.2.2!
Небесплатно накачаю ваш VPS/VDS/DS стероидами и заставлю ваши CMS летать =)
phpBB Guru blog | Тестируем phpBB 3.3 здесь! |
-
- Поддержка
- Сообщения: 5426
- Стаж: 20 лет 3 месяца
- Откуда: Питер
- Благодарил (а): 177 раз
- Поблагодарили: 749 раз
Re: nginx
Vlad__, лучше всего полностью избавиться от Apache и использовать nginx + php-fpm.
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb2.0.x 3.5.x)
Ты очистил кеш? © Sheer
https://siava.ru (phpbb
-
- phpBB 2.0.7
- Сообщения: 567
- Стаж: 8 лет 4 месяца
- Благодарил (а): 241 раз
- Поблагодарили: 52 раза
Re: nginx
Это я понимаю. Но боюсь это делать на рабочем настроенном форуме, чтобы потом не вылавливать косяки. Да и пока не готов к этому умственно

Может ткнете в мануал по настройке этой связки применительно к нашим форумам. Если есть такой. Со всеми возможными подводными камнями.
-
- Поддержка
- Сообщения: 5426
- Стаж: 20 лет 3 месяца
- Откуда: Питер
- Благодарил (а): 177 раз
- Поблагодарили: 749 раз
Re: nginx
Vlad__, например, тут достаточно подробно описано.
Экспериментировать лучше на виртуалке (VirtualBox). Когда придёт осознание что к чему, то перенесёте на рабочий сервер.
Экспериментировать лучше на виртуалке (VirtualBox). Когда придёт осознание что к чему, то перенесёте на рабочий сервер.
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb2.0.x 3.5.x)
Ты очистил кеш? © Sheer
https://siava.ru (phpbb
-
- phpBB 1.0.0
- Сообщения: 3
- Стаж: 8 лет 6 месяцев
- Поблагодарили: 1 раз
Re: nginx
Стоит сразу учесть что о настройках через .htaccess придется сразу забыть. Сам давно отказался от Apache, всех нюансов настройке форума уже не припомню, но тут одну из проблем с которой столкнулся описал.
И так небольшие мелочи конечно, которые довольно легко решаются.
Приведу некоторые свои настройки nginx
Конечно не все вам пригодиться, но может что-то поможет...
И так небольшие мелочи конечно, которые довольно легко решаются.
Приведу некоторые свои настройки nginx
Скрытый текст
nginx.conf
/etc/nginx/common/rewriteHTTPS
/etc/nginx/common/sites
Код: Выделить всё
# 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;
}
Код: Выделить всё
# Если не защищенное соединение, перенаправляем на HTTPS
if ( $scheme = "http" ) {
rewrite ^/(.*)$ https://$host/$1 permanent;
}
Код: Выделить всё
# Кодировка по-умолчанию
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;
}
-
- Поддержка
- Сообщения: 5426
- Стаж: 20 лет 3 месяца
- Откуда: Питер
- Благодарил (а): 177 раз
- Поблагодарили: 749 раз
Re: nginx
В папке docs форума есть пример конфига nginx применительно для phpbb.
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb2.0.x 3.5.x)
Ты очистил кеш? © Sheer
https://siava.ru (phpbb
-
- phpBB 3.0.0 RC1
- Сообщения: 1486
- Стаж: 9 лет 3 месяца
- Благодарил (а): 158 раз
- Поблагодарили: 172 раза
Re: nginx
Правильно заданный вопрос и описание проблемы - 70% их решения...
-
- phpBB 1.4.4
- Сообщения: 153
- Стаж: 10 лет 6 месяцев
- Благодарил (а): 44 раза
- Поблагодарили: 41 раз
Re: nginx
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;
}
-
- phpBB 1.0.0
- Сообщения: 3
- Стаж: 8 лет 6 месяцев
- Поблагодарили: 1 раз
Re: nginx
LBeaver ну если посмотрите приведенный мною скрипт, то увидите что он и сделан через server, обратите внимание на
Подгрузка файла сделана из server, да и остальные файлы, которые используются на разных сайтах, не во всех сайтах включается перенаправление, поэтому и сделан отдельный файл (есть свои нюансы у меня).
У меня nginx.conf разнесен по отдельным файлам для удобства, чтоб не писать один и тот-же код. Ну лентяй я что тут поделать
Код: Выделить всё
include /etc/nginx/common/rewriteHTTPS;
У меня nginx.conf разнесен по отдельным файлам для удобства, чтоб не писать один и тот-же код. Ну лентяй я что тут поделать

-
- phpBB 2.0.7
- Сообщения: 567
- Стаж: 8 лет 4 месяца
- Благодарил (а): 241 раз
- Поблагодарили: 52 раза
Re: nginx
Не подскажите какие параметры лучше выставить для форума с большим графическим контентом в виде картинок?
Сейчас стоят такие, но все равно периодически (прикручен fail2ban) банятся адреса 66.102.9.ХХХ (вроде Google) на обращениях по ссылкам к картинкам, хотя googlуbot пропускает. Я так понимаю нужно увеличить лимиты или прописать "безлимитный" диапазон адресов. Какие у гугла? И гугл ли это?
Сейчас стоят такие, но все равно периодически (прикручен 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;
}
-
- Поддержка
- Сообщения: 5426
- Стаж: 20 лет 3 месяца
- Откуда: Питер
- Благодарил (а): 177 раз
- Поблагодарили: 749 раз
Re: nginx
Картинки и другую статику вовсе нет смысла ограничивать по запросам в секунду 

Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb2.0.x 3.5.x)
Ты очистил кеш? © Sheer
https://siava.ru (phpbb
-
- phpBB 2.0.7
- Сообщения: 567
- Стаж: 8 лет 4 месяца
- Благодарил (а): 241 раз
- Поблагодарили: 52 раза
Re: nginx
Вот мои конфиги нгинкса. Делалось методом научного тыка на основе примерного конфига в дистрибутиве форума 3.2. Уважаемые спецы, посмотрите пожалуйста - накосячил я или нет и что исправить и поправить? Все в принципе работает, только проблемы с сохранением ббкодов в админке - выбрасывает еррор 502.
myforum.com.conf
nginx.conf
cache.conf
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";
-
- phpBB 3.0.4
- Сообщения: 2215
- Стаж: 17 лет 4 месяца
- Откуда: Павлодар
- Благодарил (а): 2 раза
- Поблагодарили: 117 раз
Re: nginx
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/
По мелочи, рекомендую включить 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