Различия

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


Предыдущая версия
nginx_reverse_proxy_apache_dokuwiki [2023/06/01 19:44] (текущий) – [Nginx: nginx.conf] darkfire
Строка 1: Строка 1:
 +====== Nginx Apache DokuWiki ======
 +Связка [[Nginx]] в роли обратного прокси (reverse proxy) **FrontEnd**, [[Apache]] **BackEnd** и вики-движок [[DokuWiki|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
 +        
 +        SetEnvIf X-Forwarded-Proto https HTTPS=on
 +
 +        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 bash>
 +proxy_set_header Host $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 https;
 +</file>
 +  * Создадим виртуальный домен по умолчанию. Виртуальный домен по умолчанию, позволит блокировать (не пересылать [[Apache]]) запросы URL которые не описаны. Благодаря использованию listen 80 default_server все обращения на несуществующие хосты будут перенаправляться по умолчанию к данной конфигурации виртуального домена.
 +  * Листинг nginx.conf<file>
 +# nano /etc/nginx/nginx.conf
 +</file><file>
 +user www-data;
 +# /etc/security/limits.conf
 +# nginx      soft     nproc          65535
 +# nginx      hard     nproc          65535
 +# nginx      soft     nofile         65535
 +# nginx      hard     nofile         65535
 +worker_rlimit_core   65535;
 +worker_rlimit_nofile 65535;
 +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>

📌 Удобный подбор VPS по параметрам доступен на DIEGfinder.com - официальном инструменте проекта DIEG. Это часть единой экосистемы, созданной для того, чтобы помочь быстро найти подходящий VPS/VDS сервер для любых задач хостинга.

📌 Для тестирования скриптов, установщиков VPN и Python-ботов рекомендуем использовать надежные VPS на короткий срок. Подробнее о быстрой аренде VPS для экспериментов - читайте здесь.

💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!