nginx
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ | Как задавать вопросы | Как устанавливать расширения
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение
).
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ | Как задавать вопросы | Как устанавливать расширения
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение
nginx
Имеется рабочий форум на стандартной связке lamp. Вычитал, что установка nginx перед апачем для статики дает выигрыш в скорости и улучшает защиту сайта от ддоса и прочего. Так ли это? Где можно почитать как установить nginx применительно к форуму phpbb и какие могут быть подводные камни?
-
Mr. Anderson
- phpBB Guru

- Сообщения: 7522
- Стаж: 21 год 9 месяцев
- Откуда: СССР
- Благодарил (а): 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 здесь! |
-
Siava
- Поддержка

- Сообщения: 5493
- Стаж: 20 лет 11 месяцев
- Откуда: Питер
- Благодарил (а): 183 раза
- Поблагодарили: 765 раз
Re: nginx
Vlad__, лучше всего полностью избавиться от Apache и использовать nginx + php-fpm.
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb2.0.x 3.5.x)
Ты очистил кеш? © Sheer
https://siava.ru (phpbb
Re: nginx
Это я понимаю. Но боюсь это делать на рабочем настроенном форуме, чтобы потом не вылавливать косяки. Да и пока не готов к этому умственно
Может ткнете в мануал по настройке этой связки применительно к нашим форумам. Если есть такой. Со всеми возможными подводными камнями.
-
Siava
- Поддержка

- Сообщения: 5493
- Стаж: 20 лет 11 месяцев
- Откуда: Питер
- Благодарил (а): 183 раза
- Поблагодарили: 765 раз
Re: nginx
Vlad__, например, тут достаточно подробно описано.
Экспериментировать лучше на виртуалке (VirtualBox). Когда придёт осознание что к чему, то перенесёте на рабочий сервер.
Экспериментировать лучше на виртуалке (VirtualBox). Когда придёт осознание что к чему, то перенесёте на рабочий сервер.
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb2.0.x 3.5.x)
Ты очистил кеш? © Sheer
https://siava.ru (phpbb
-
iks_
- phpBB 1.0.0
- Сообщения: 3
- Стаж: 9 лет 1 месяц
- Поблагодарили: 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;
}-
Siava
- Поддержка

- Сообщения: 5493
- Стаж: 20 лет 11 месяцев
- Откуда: Питер
- Благодарил (а): 183 раза
- Поблагодарили: 765 раз
Re: nginx
В папке docs форума есть пример конфига nginx применительно для phpbb.
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb2.0.x 3.5.x)
Ты очистил кеш? © Sheer
https://siava.ru (phpbb
-
LONER
- phpBB 3.0.0 RC1
- Сообщения: 1486
- Стаж: 9 лет 10 месяцев
- Благодарил (а): 158 раз
- Поблагодарили: 172 раза
Re: nginx
Правильно заданный вопрос и описание проблемы - 70% их решения...
-
LBeaver
- phpBB 1.4.4
- Сообщения: 153
- Стаж: 11 лет 1 месяц
- Благодарил (а): 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;
}-
iks_
- phpBB 1.0.0
- Сообщения: 3
- Стаж: 9 лет 1 месяц
- Поблагодарили: 1 раз
Re: nginx
LBeaver ну если посмотрите приведенный мною скрипт, то увидите что он и сделан через server, обратите внимание на
Подгрузка файла сделана из server, да и остальные файлы, которые используются на разных сайтах, не во всех сайтах включается перенаправление, поэтому и сделан отдельный файл (есть свои нюансы у меня).
У меня nginx.conf разнесен по отдельным файлам для удобства, чтоб не писать один и тот-же код. Ну лентяй я что тут поделать
Код: Выделить всё
include /etc/nginx/common/rewriteHTTPS;У меня nginx.conf разнесен по отдельным файлам для удобства, чтоб не писать один и тот-же код. Ну лентяй я что тут поделать
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;
}-
Siava
- Поддержка

- Сообщения: 5493
- Стаж: 20 лет 11 месяцев
- Откуда: Питер
- Благодарил (а): 183 раза
- Поблагодарили: 765 раз
Re: nginx
Картинки и другую статику вовсе нет смысла ограничивать по запросам в секунду 
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb2.0.x 3.5.x)
Ты очистил кеш? © Sheer
https://siava.ru (phpbb
Re: nginx
У меня и не ограничено. Картинки выдаются /download/file.php?id=$1; а это вроде не статика.
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";
-
nissin
- phpBB 3.0.4
- Сообщения: 2224
- Стаж: 17 лет 11 месяцев
- Откуда: Павлодар
- Благодарил (а): 2 раза
- Поблагодарили: 120 раз
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

