Skip to content

Instantly share code, notes, and snippets.

@xakrume
Created April 30, 2015 07:45
Show Gist options
  • Save xakrume/3fe7315895728cf099ef to your computer and use it in GitHub Desktop.
Save xakrume/3fe7315895728cf099ef to your computer and use it in GitHub Desktop.
bitrix nginx
user bitrix; #пользователь, под которым работает nginx. Желательно совпадение с пользователем apache
worker_processes 8; #8 одновременных процессов
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
worker_rlimit_nofile 10240; #максимальное число открытых файлов
events {
use epoll;
worker_connections 10240; #максимальное число соединений с одним процессом. Система может одновременно работать с max_clients = worker_processes * worker_connections, т.е. с 81920 соединений, в том числе статических файлов
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
#формат логов
log_format main '$remote_addr - $remote_user [$time_local] $status'
'"$request" $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
log_format common '$remote_addr - - [$time_local] "$request" $status $bytes_sent "$http_referer" "$http_user_agent" $msec';
access_log /var/log/nginx/access.log common;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
client_max_body_size 10m; # максимально допустимый размер тела запроса клиента, указываемый в строке "Content-Length" в заголовке запроса
client_body_buffer_size 128k;
proxy_connect_timeout 300; #время на ожидание соединения
proxy_send_timeout 300;
proxy_read_timeout 300;
proxy_buffer_size 64k;
proxy_buffers 8 64k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 10m;
gzip on; #сжимать передаваемые данные
gzip_proxied any;
gzip_types application/x-javascript text/css;
server { #виртуальный хост
listen 80; #порт 80
server_name bitrix; #адрес узла. Если узел всего один – можно написать любой
server_name_in_redirect off; #лучше поставить в ON – передавать запрошенное имя сайту
access_log /var/log/nginx/access.log common;
index index.php;
error_page 500 502 503 504 /500.html;
error_page 404 = /404.php;
#установить дополнительные заголовки для определения адреса клиента в статистике сайта
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host:80;
client_max_body_size 1024M; #максимальный размер передаваемого файла
client_body_buffer_size 4M;
root /var/www; #корневая папка сайта
#включить https режим при нахождении в корне сайта файла .htsecure
if (-f /home/bitrix/www/.htsecure) {
rewrite ^(.*)$ https://$host$1 permanent;
}
#выбрать, какие данные пересылать backend серверу, а какие – показывать напрямую
#в данной конфигурации все пересылается backend серверу
#обилие вариантов потребовалось компании Битрикс для того, чтобы при добавлении в конфигурацию отдачу статических файлов напрямую через NGINX динамические запросы на псевдостатические файлы все-таки перенаправлялись на backend
location / { expires 3d;
if ($request_method = OPTIONS ) {
proxy_pass http://127.0.0.1:8888;
}
if ($request_method = PROPFIND ) {
proxy_pass http://127.0.0.1:8888;
}
if ($request_method = PROPPATCH ) {
proxy_pass http://127.0.0.1:8888;
}
if ($request_method = MKCOL ) {
proxy_pass http://127.0.0.1:8888;
}
if ($request_method = COPY ) {
proxy_pass http://127.0.0.1:8888;
}
if ($request_method = MOVE ) {
proxy_pass http://127.0.0.1:8888;
}
if ($request_method = LOCK ) {
proxy_pass http://127.0.0.1:8888;
}
if ($request_method = UNLOCK ) {
proxy_pass http://127.0.0.1:8888;
}
}
location ~ ^(/extranet/docs|/docs|/workgroups|/company/profile|/bitrix/tools|/company/personal/user).*/$ {
proxy_pass http://127.0.0.1:8888;
}
location ~ ^(/extranet/docs|/docs|/workgroups|/company/profile|/bitrix/tools|/company/personal/user) {
if (-d $request_filename) {
rewrite ^(.*)(/*)$ $1/ last;
}
proxy_pass http://127.0.0.1:8888;
}
location ~ ^(/bitrix/html_pages)
{
root /var/www;
index [email protected];
if (!-f $request_filename)
{
rewrite ^/bitrix/html_pages(.*)@(.*)\.html$ $1.php?$2 break;
rewrite ^/bitrix/html_pages(.*)\.html$ $1\.php break;
proxy_pass http://127.0.0.1:8888;
}
}
location ~ \.php$ {
root /var/www;
if ($request_method = POST ) {
break;
proxy_pass http://127.0.0.1:8888;
}
if ($http_cookie !~ "PHPSESSID=" ) {
rewrite ^(.*)\.php$ /bitrix/html_pages$1@$args.html? last;
}
proxy_pass http://127.0.0.1:8888;
}
location ~ /$ {
root /var/www;
if ($request_method = POST ) {
break;
proxy_pass http://127.0.0.1:8888;
}
if ($http_cookie !~ "PHPSESSID=" ) {
rewrite ^(.*)/$ /bitrix/html_pages$1/index@$args.html? last;
}
proxy_pass http://127.0.0.1:8888;
}
location ~ (/|\.php|\.asmx)$ {
proxy_pass http://127.0.0.1:8888;
}
location ~ /\.ht {
deny all;
}
location ~ /favicon.ico {
proxy_pass http://127.0.0.1:8888;
}
location ~ ^(/bitrixsetup\.php)$ {
proxy_pass http://127.0.0.1:8888;
proxy_buffering off;
}
}
#аналогичная конфигурация для https (удалена)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment