Article

Nginx Основы 03 Делаем связку Nginx(proxy front) + Apache(back)

Материалов по данной теме много. У себя оставлю для начала, самый простой пример, как это настроить, и как проверить, что всё работает корректно

Суть настройки:

  1. Настроить сервер Apache, чтобы вместо defaut порта 80 он слушал другой
  2. Настроить сервер Nginx на порт 80, + чтобы он всю НЕ статику отдавал на Apache
  3. Настроить Apache конфиги для конкретного приложения(сайта).

Основные материалы, которые хороши для этого:

Настройки конфига /etc/nginx/nginx.conf не поменялись с прошлого поста

Для себя оставлю полное руководство, если ресурсы ищезнут

1) Настройка Apache


/etc/apache2/ports.conf


Listen 8080 # change 80 ==> 8080

<IfModule ssl_module>
Listen 443
</IfModule>

<IfModule mod_gnutls.c>
Listen 443
</IfModule>

2) Настройка сервера nginx


/etc/nginx/sites-enable/my_test4.loc

server{

listen 80;

root /var/www/my_test4.loc;
index index.php index.html;
server_name my_test4.loc;


# всё, что не PHP
location / {
    try_files $uri $uri/ /index.php;
}

location ~ \.php$ {

    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header Host $host;
    proxy_pass http://127.0.0.1:8080;


}
}

 ln -s /etc/nginx/sites-enabled/my_test4.loc /etc/nginx/sites-available/my_test4.loc

3) Создаю простой Apache конфиг + всё что с ним связано (взял сразу выжимку из команд)

sudo apt-get update
sudo mkdir -p /var/www/my_test4.loc
sudo chown -R $USER:$USER /var/www/my_test4.loc
sudo chmod -R 777 /var/www/my_test4.loc
sudo cp /etc/apache2/sites-available/kbenergy.loc.conf /etc/apache2/sites-available/my_test4.loc.conf
sudo chmod 777 /etc/apache2/sites-available/*
mousepad /etc/apache2/sites-available/my_test4.loc.conf
file == CHANGE DATA
sudo a2ensite cloudbank.biz.loc.conf
service apache2 restart
sudo mousepad /etc/hosts
file == Change DATA





+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
my_test4.loc.conf ==> inside 
<VirtualHost *:8080>  # вот тут поменял порт , всё остальное - стандартный конфиг Apache    
    <Directory /var/www/my_test4.loc>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All 
    Order allow,deny
    allow from all 
    </Directory>
    ServerAdmin admin@my_test4.loc
    ServerName my_test4.loc
    ServerAlias www.my_test4.loc
    DocumentRoot /var/www/my_test4.loc/
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
/etc/hosts ==> inside 

127.0.0.1    localhost
......
127.0.0.1    my_test4.loc www.my_test4.loc
......

Итого, создал директорию проекта, апачевский файл и записал хост в /etc/hosts

sudo service apache restart
sudo service nginx restart    

Как проверить, что теперь действительно запрос зашел сначала на nginx, а он отправил его на apache?

# просто остановить nginx, который смотрит на 80й порт (в отличии от переконфигурированого апача)
sudo service nginx stop
# и рестартануть страницу
Third-party source 2

No data here

Dropdown
test 123