Инструменты пользователя

Инструменты сайта


nginx_reverse_proxy_apache_dokuwiki

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

nginx_reverse_proxy_apache_dokuwiki [2013/09/18 11:08] (текущий)
Строка 1: Строка 1:
 +====== Nginx Apache DokuWiki ======
 +Связка [[Nginx]] в роли обратного прокси (reverse proxy) **FrontEnd**,​ [[Apache]] **BackEnd** и вики-движок [[DokuWiki]].
  
 +В этом случае nginx будет лишь посредником (прокси),​ стоящим перед [[Apache]]. Nginx будет служить для балансировки нагрузки и кэширования контента.
 +
 +Apache будет работать на loopback интерфейсе localhost(127.0.0.1) и порту 81, nginx на всех интерфейсах используя порт 80.
 +====== Apache ======
 +
 +  * **Apache**. В Debian для Apache в файле ports.conf нужно изменить директивы NameVirtualHost и Listen. И безусловно нужно проверить директиву VirtualHost для каждого виртуального хоста и убедиться в том что порт там не прописан явно.<​file>​
 +# nano /​etc/​apache2/​ports.conf
 +
 +NameVirtualHost *:81
 +Listen 127.0.0.1:​81
 +
 +<​IfModule mod_ssl.c>​
 +    Listen 443
 +</​IfModule>​
 +
 +<​IfModule mod_gnutls.c>​
 +    Listen 443
 +</​IfModule>​
 +</​file>​
 +  * **Apache**. Виртуальный домен **wiki.example.com** для [[DokuWiki]].<​file>​
 +# nano /​etc/​apache2/​sites-available/​wiki.example.com
 +<​VirtualHost *:81>
 +        ServerName wiki.example.com
 +        ServerAdmin webmaster@example.com
 +        DirectoryIndex index.php
 +
 +        ErrorLog ​ ${APACHE_LOG_DIR}/​wiki.example.com-error.log
 +        CustomLog ${APACHE_LOG_DIR}/​wiki.example.com-access.log combined
 +
 +        DocumentRoot /​var/​www/​wikionline
 +        <​Directory /​var/​www/​wikionline/>​
 +                Options FollowSymLinks MultiViews
 +                AllowOverride All
 +                Order deny,allow
 +                allow from all
 +        </​Directory>​
 +        <​LocationMatch "/​(data|conf|bin|inc)/">​
 +                Order allow,deny
 +                Deny from all
 +                Satisfy All
 +        </​LocationMatch>​
 +</​VirtualHost>​
 +</​file>​
 +  * **Apache**. Перезапустим Apache с новыми настройками.<​file>​
 +# /​etc/​init.d/​apache2 restart
 +</​file>​
 +====== Nginx: nginx.conf ======
 +  * Подключим в файл nginx.conf файл proxy_params,​ кторый содержит настройки для режима proxy_pass.<​file>​
 +proxy_set_header Host $host;
 +proxy_set_header X-Real-IP $remote_addr;​
 +proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;​
 +</​file>​
 +  * Создадим виртуальный домен по умолчанию. Виртуальный домен по умолчанию,​ позволит блокировать (не пересылать [[Apache]]) запросы URL которые не описаны. Благодаря использованию listen 80 default_server все обращения на несуществующие хосты будут перенаправляться по умолчанию к данной конфигурации виртуального домена.
 +  * Листинг nginx.conf<​file>​
 +# nano /​etc/​nginx/​nginx.conf
 +</​file><​file>​
 +user www-data;
 +# /​etc/​security/​limits.conf
 +# www-data ​       hard    nofile ​         60004
 +worker_rlimit_nofile 60004;
 +worker_processes 6; # не должно превышать количество ядер в процессоре
 +pid /​var/​run/​nginx.pid;​
 +
 +events {
 +
 +        worker_connections 10000; # рассчитывается по формуле worker_rlimit_nofile/​worker_processes
 +        # multi_accept on;
 +}
 +</​file><​file>​
 +http {
 +        # Basic Settings
 +
 +        sendfile on;
 +        client_max_body_size 10M;
 +        tcp_nopush on;
 +        tcp_nodelay on;
 +        keepalive_timeout 65;
 +        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;​
 +
 +        # Logging Settings
 +
 +        access_log /​var/​log/​nginx/​access.log;​
 +        error_log /​var/​log/​nginx/​error.log;​
 +
 +        # Gzip Settings
 +        gzip on;
 +        gzip_disable "​msie6";​
 +
 +        ##
 +        # Virtual Host Configs
 +        ##
 +
 +        include /​etc/​nginx/​proxy_params;​ # Host X-Real-IP X-Forwarded-For
 +
 +server {
 +# default_server если не найдено имени виртуального хоста - nginx заблокирует доступ и
 +# не будет пересылать запрос Apache
 +        listen 80 default_server;​
 +        server_name defaultwwwsite;​
 +        access_log /​var/​log/​nginx/​000-default-host.access.log;​
 +        deny all;
 +}
 +        include /​etc/​nginx/​conf.d/​*.conf;​
 +        include /​etc/​nginx/​sites-enabled/​*;​
 +}
 +</​file>​
 +====== Nginx: виртуальный домен ======
 +  * **Nginx**. Настройка виртуального домена **wiki.example.com** в Nginx. Директива proxy_pass указывает куда пересылать запросы,​ которые не обработал nginx (в нашем случае пересылается серверу Apache).<​file>​
 +# nano /​etc/​nginx/​sites-available/​wiki.example.com
 +server {
 +        listen 80;
 +        server_name ​ wiki.example.com www.wiki.example.com;​
 +        root /​var/​www/​mywiki/;​
 +        index index.php doku.php;
 +
 +        # Buffering
 +        proxy_buffering ​    on; # default on
 +        proxy_max_temp_file_size 0; # 16096m ​ default 1G
 +        client_max_body_size 10240m; # 10m
 +        client_body_buffer_size 128k;
 +
 +        error_log ​  /​var/​log/​nginx/​example.com.info.error.log ​ warn;
 +        access_log ​ /​var/​log/​nginx/​example.com.info.access.log;​
 +
 +location = /stat {
 +        stub_status on;
 +        access_log ​ off;
 +        allow 10.26.95.14;​
 +        allow 10.26.95.251;​
 +        deny all;
 +        }
 +
 +location ~ /​(data|conf|bin|inc)/​ { # Запретить доступ к каталогам data|conf|bin|inc
 +        deny all;
 +        }
 +
 +location ~ /\. { # disabling access for files beginning with a point e.g. .htaccess, .git, .svn
 +        deny all;
 +#       ​access_log off;
 +#       ​log_not_found off;
 +        }
 +location / {
 +        proxy_pass http://​127.0.0.1:​81;​
 +        include /​etc/​nginx/​proxy_params;​ # Host X-Real-IP X-Forwarded-For
 +        }
 +
 +}
 +</​file>​
 +====== Nginx: запуск ======
 +  * **nginx**. Проверим синтаксис конфигурационных файлов nginx.<​file>​
 +# nginx -t
 +nginx: the configuration file /​etc/​nginx/​nginx.conf syntax is ok
 +nginx: configuration file /​etc/​nginx/​nginx.conf test is successful
 +</​file>​
 +  * **nginx**. Все настройка закончена. Перезапускаем nginx.<​file>​
 +# /​etc/​init.d/​nginx restart
 +</​file>​
загрузка...
nginx_reverse_proxy_apache_dokuwiki.txt · Последние изменения: 2013/09/18 11:08 (внешнее изменение)