Bitrix dalam banyak Nginx + PHP-FPM, mengatur CNC, serta cache komposit dengan umpan balik melalui nginx. Konfigurasi yang dimodifikasi

Tujuan: Untuk menyediakan konfigurasi server virtual Nginx untuk pengoperasian Bitrix-cms dalam bundel Nginx + PHP-FPM. Yang, antara lain, juga cocok untuk bundel Nginx + Apache2, dengan sedikit modifikasi.

Target pengguna: Administrator server, administrator situs lanjutan, programmer.

Ada cukup artikel tentang hal ini, tetapi jika Anda melihatnya tidak resmi, mereka biasanya mengandung kesalahan, dan yang resmi penuh jika tidak disarankan untuk digunakan di Nginx. Saya berharap bahwa setelah saya memposting konfigurasi ini, bundel Nginx + PHP-FPM akan menjadi lebih serius.

Berikut ini adalah konfigurasi resmi untuk cache komposit untuk bekerja melalui nginx.

Saya akan menunjukkan implementasi pengembalian cache komposit file. Secara umum, pengembalian dengan memcached dilakukan dengan analogi. Dalam konfigurasi pengembalian file cache, saya menghitung 11 ifs, yang saya singkirkan dengan mengulanginya di peta.

Saya akan mulai dengan versi yang disederhanakan dari CNC untuk mereka yang hanya membutuhkan banyak Nginx + PHP-FPM tanpa mengembalikan cache komposit melalui Nginx. Dipahami bahwa bagian server sudah dikonfigurasi, dengan nama domain dan pengiriman ke php-fpm.

location / { try_files $uri $uri/ /bitrix/urlrewrite.php$is_args$args; } 

Tidak mengherankan ketika melihat kanvas-kanvas yang datang kepada saya, ini sudah cukup bagi Bitrix untuk bekerja dengan benar. Jika Anda memerlukan pengalihan dari index.php dan index.html ke luar, maka Anda masih perlu menambahkan baris ini:

 if ($request_uri ~ ^(.*)/index.(html|php)) { return 301 $1/$is_args$args; } 

Sayangnya, tidak ada pengganti yang layak jika. Tapi baris ini berfungsi tanpa membuat masalah.

Contoh konfigurasi minimalis
 server { listen 80; server_name site.ru; root /var/www/site.ru/; index index.php; location ~ \.php$ { include /etc/nginx/fastcgi_params; fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_intercept_errors on; } if ($request_uri ~ ^(.*)/index.(html|php)) { return 301 $1/$is_args$args; } location / { try_files $uri $uri/ /bitrix/urlrewrite.php$is_args$args; } location ~* @.*\.html$ { internal; } } 


Saya ingin menekankan bahwa ini adalah konfigurasi minimalis tanpa aturan untuk statika, kompresi, dan di sana saya hanya membahas file cache komposit dari akses langsung. Konfigurasi yang mencakup tempat-tempat tertentu dari akses langsung melalui nginx cukup individual. Saya memiliki kit ini yang mungkin cocok untuk seseorang. Tetapi Anda harus menggunakannya dengan hati-hati dengan kesadaran. Perlu diingat bahwa memasukkan data lokasi ke konfigurasi Anda dapat menyebabkan situs tidak dapat beroperasi atau bagian dari fungsinya.

Sebuah fragmen dari config memblokir akses ke file yang seharusnya tersedia hanya ketika diakses dari PHP
 location ~ \.php$ { location ~* /\.\./ { internal; } location ~ /\.[^/]+$ { internal; } location ~* ^/upload/1c_[^/]+/ { internal; } location ~* ^/(bitrix/(cache|images|tmp)|upload)/ { internal; } location ~* ^/bitrix/(footer|header|license_key)\.php$ { internal; } location ~* ^/(bitrix|local)/components/(.*)/(.*)/(class|component)\.php$ { internal; } location ~* ^/(bitrix|local)/(backup|blocks|bx_cloud_upload|local_cache|module|modules|managed_cache|php_interface|public|stack_cache)/ { internal; } include /etc/nginx/fastcgi_params; fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_intercept_errors on; } location ~* \.(hg|svn|git|bzr)$ { internal; } location ~* /\.\./ { internal; } location ~* @.*\.html$ { internal; } location / { location ~* ^/(bitrix|local)/(backup|blocks|bx_cloud_upload|local_cache|module|modules|managed_cache|php_interface|public|services|stack_cache)/ { internal; } location ~ /\.[^/]+$ { internal; } location ~* ^/upload/1c_[^/]+/ { internal; } try_files $uri $uri/ /bitrix/urlrewrite.php$is_args$args; } 


Dan tentu saja contoh lokasi untuk file statis

 location ~* \.(jpg|jpeg|png|tiff|gif|webp|xml|html|yml|ogg|ogv|svg|svgz|eot|otf|woff|woff2|mp4|ttf|rss|atom|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|rtf|pdf|txt|js|css|bmp|pnm|pbm|ppm)$ { access_log off; expires 97d; } 

Sekarang mari kita beralih ke konfigurasi agar komposit bekerja dengan kembalinya file cache melalui nginx. Pertama-tama, perlu untuk menentukan apakah mungkin untuk memberikan cache komposit untuk permintaan ini atau apakah perlu dikirim untuk diproses melalui php. Untuk melakukan ini, di Nginx, di bagian http, tambahkan beberapa peta, serta beberapa arahan:

 modern_browser_value "modern"; modern_browser msie 10.0; modern_browser unlisted; map "$cookie_BITRIX_SM_LOGIN:$cookie_BITRIX_SM_UIDH:$cookie_BITRIX_SM_CC" $storedAuth { default ""; "~*:*:Y" ""; "~*:*:*" 1; "~*:*:" 1; } map "$request_method:$http_bx_action_type:$cookie_BITRIX_SM_NCC:$http_x_forwarded_scheme:$modern_browser:$storedAuth" $usecache { default "1"; "~GET:::*https*" "1"; "~GET:::*:*:" ""; } 

Selanjutnya, kami menulis langsung di bagian server

 set $i "index@"; location / { try_files /bitrix/html_pages/$host$uri$i${args}.html$usecache /bitrix/html_pages/$host$uri$i${args}=.html$usecache /bitrix/html_pages/$host$uri/$i${args}.html$usecache /bitrix/html_pages/$host$uri/$i${args}=.html$usecache $uri $uri/ /bitrix/urlrewrite.php$is_args$args; } 

Nah, untuk memahami bagaimana konfigurasi minimum bagian server akan terlihat kira-kira

Contoh konfigurasi minimalis dengan kembalinya cache file komposit melalui nginx
 server { listen 80; server_name site.ru; root /var/www/site.ru/; index index.php; location ~ \.php$ { include /etc/nginx/fastcgi_params; fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_intercept_errors on; } if ($request_uri ~ ^(.*)/index.(html|php)) { return 301 $1/$is_args$args; } set $i "index@"; location / { try_files /bitrix/html_pages/$host$uri$i${args}.html$usecache /bitrix/html_pages/$host$uri$i${args}=.html$usecache /bitrix/html_pages/$host$uri/$i${args}.html$usecache /bitrix/html_pages/$host$uri/$i${args}=.html$usecache $uri $uri/ /bitrix/urlrewrite.php$is_args$args; } location ~* @.*\.html$ { internal; } } 

Saya akan dengan senang hati mengajukan pertanyaan dan saran mengenai konfigurasi ini, dan juga untuk kegembiraan saya akan melihat pencapaian Anda.

Source: https://habr.com/ru/post/id438604/


All Articles