Четверг , Май 24 2018
Home » Web сервера » Apache2 проксирование, и кэширование с помощью nginx

Apache2 проксирование, и кэширование с помощью nginx

Проксирование, и кэширование с помощью nginx_proxy_cacheНе знаю зачем вам нужен apache, но все же опишу установку связки apache+nginx+php7 заодно сразу прикрутим кэширование, чтобы уж точно все было быстро и без лагов. Сразу скажу если вы устанавливаете веб сервер первый раз, и почему то решили поставить apache то я не рекомендую, ставить голый apache, а вообще лучще использовать быстрый и легкий nginx как его установить и запустить на нем сайт я писал ранее.

apt install apache2 libapache2-mod-php7.0 libapache2-mod-rpaf

sudo a2enmod php7.0

Если вдруг вам выдает ошибку ( мол этот модуль конфликтует с другим. Например с этим mpm_event вам стоит отключить его

a2dismod mpm_event

и далее по новому попытаться включить модуль php7.0

sudo a2enmod php7.0

Если все удалось включаем modrewrite

sudo a2enmod rewrite

Загрузим ваш сайт в директорию /var/www и пропишем права

chown -R www-data:www-data /var/www

Создадим файл конфигурации виртуального хостинга

nano /etc/apache2/sites-available/mysite.conf

Вставим в него данный конфиг не забудьте заменить сайт gigamania.ru на свой:

<VirtualHost *:88>
	ServerName gigamania.ru
	DocumentRoot /var/www/html
	ErrorLog ${APACHE_LOG_DIR}/error.log
	CustomLog ${APACHE_LOG_DIR}/access.log combined
	#Include conf-available/serve-cgi-bin.conf
        RewriteEngine On
<Directory /var/www/html>
	Options Indexes FollowSymLinks MultiViews
	AllowOverride All
	Order allow,deny
	allow from all
</Directory>
</VirtualHost>

Добавим созданный сайт командой в консоли

sudo a2ensite mysite.conf

редактируем

nano /etc/apache2/apache2.conf

добавляем

ServerName 127.0.0.1

редактируем

nano /etc/apache2/port.conf

находим строку listen 80 меняем ее на

Listen 88

Немного остановимся и перейдем к установке nginx и php7 и php7.0-fpm так как без них работать у нас ничего не будет. так что вперед по ссылкам, а потом продолжите.

И так вы установили nginx и php7.0-fpm теперь продолжим дальнейшую конфигурацию веб сервера

Редактируем

nano /etc/nginx/proxy_params

чистим от от старой конфигурации и вставляем

proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;

client_max_body_size 100M;
client_body_buffer_size 1m;
proxy_intercept_errors on;
proxy_buffering on;
proxy_buffer_size 128k;
proxy_buffers 256 16k;
proxy_busy_buffers_size 256k;
proxy_temp_file_write_size 256k;
proxy_max_temp_file_size 0;
proxy_read_timeout 300;
proxy_cache_valid 200 302 3d;

сохраняем

создаем файл виртуального хостинга

nano /etc/nginx/sites-available/apache

вставляем

proxy_cache_path /var/www/cache levels=1:2 keys_zone=kvm:160m inactive=7d max_size=1024m;

server {
listen 80;
server_name gigamania.ru;
root              /var/www/html;
index    index.html   index.php;


location / {
if ($http_cookie ~* "comment_author_|wordpress_(?!test_cookie)|wp-postpass_" ) {
		set $do_not_cache 1;
	 }
	 proxy_no_cache $do_not_cache;
	 proxy_cache_bypass $do_not_cache;
         proxy_pass http://127.0.0.1:88;
         proxy_http_version 1.1;
	 proxy_cache kvm;
         add_header                  X-Content-Type-Options nosniff;
         add_header                  X-XSS-Protection "1; mode=block";
         add_header                  X-Frame-Options DENY;
         include /etc/nginx/proxy_params;
         }


location ~* ^.+\.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf|css|js|woff2)$ {
        proxy_pass http://127.0.0.1:88;	
        add_header                  X-Content-Type-Options nosniff;
        add_header                  X-XSS-Protection "1; mode=block";
        add_header                  X-Frame-Options DENY;	
        access_log off;	log_not_found off; expires max;
        }

location @proxy {
        proxy_pass http://127.0.0.1:88;
        include /etc/nginx/proxy_params;
        add_header                  X-Content-Type-Options nosniff;
        add_header                  X-XSS-Protection "1; mode=block";
        add_header                  X-Frame-Options DENY;
        add_header X-Cache $upstream_cache_status;
        }

location ~* \.php$ {
        proxy_pass http://127.0.0.1:88;
        include /etc/nginx/proxy_params;
        add_header                  X-Content-Type-Options nosniff;
        add_header                  X-XSS-Protection "1; mode=block";
        add_header                  X-Frame-Options DENY;
       }

gzip                    on;
       gzip_http_version       1.0;
       gzip_min_length         1100;
       gzip_buffers           16 8k;
       gzip_types
       text/css
       text/javascript
       text/xml
       text/plain
       text/x-component
       application/javascript
       application/x-javascript
       application/json
       application/xml
       application/rss+xml
       application/atom+xml
       font/truetype
       font/opentype
       application/vnd.ms-fontobject
       image/svg+xml;
       gzip_proxied            expired no-cache no-store private auth;
       gzip_disable            "msie6";
       gzip_vary               on;
       gzip_comp_level         5;
}

Делаем симлинк

ln -s /etc/nginx/sites-available/apache /etc/nginx/sites-enabled

редактируем nginx.conf

nano /etc/nginx/nginx.conf

user www-data www-data;
worker_processes auto;
pid /run/nginx.pid;

events {
	worker_connections 1024;
	multi_accept on;
        use epoll;
}

http {
 
	upstream php {
        server unix:/tmp/php-cgi.socket;
        server 127.0.0.1:9000;
}

        open_file_cache max=1000 inactive=20s;
        open_file_cache_valid 30s;
        open_file_cache_min_uses 1;
        open_file_cache_errors on;

	sendfile on;
        sendfile_max_chunk  128k;
	tcp_nopush on;
	tcp_nodelay on;
	keepalive_timeout 30;
        keepalive_requests 1000;
        reset_timedout_connection on;
        client_header_timeout 5;
        client_body_timeout  10;
        client_header_buffer_size   2k;
        client_body_buffer_size  256k;
        client_max_body_size  12m;
        send_timeout 5;
	types_hash_max_size 2048;
	server_tokens off;

	# server_names_hash_bucket_size 64;
	# server_name_in_redirect off;

	include /etc/nginx/mime.types;
        default_type  application/octet-stream;


	access_log /var/log/nginx/access.log;
	error_log /var/log/nginx/error.log;

	include /etc/nginx/sites-enabled/*;
}

перезапускаем

service php7.0-fpm restart
service nginx restart
service apache2 restart

чтобы посмотреть ошибки в конфигах если что-то пошло не так
пишем в консоль для nginx

nginx -t

для apache2

apachectl -t

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *