Created
April 30, 2015 07:45
-
-
Save xakrume/3fe7315895728cf099ef to your computer and use it in GitHub Desktop.
bitrix nginx
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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