nginx proxy + apache2 + bash



На днях на работе настраивал себе на машине nginx в связке с апачем, обычно апача хватало, но новый проект требует быстродействия да нетривиальных вещей – поэтому было решено сразу писать под nginx некоторые вещи.

Задание состояло в том, чтоб подвеситть С++ скрипт на fastcgi для проверки прав на отдачу картинов по фиктивному пути, но об этом пока рано говорить полностью. Проблема состояла в том, что дома тоже захотелось поставить эту связку – уж больно мне понравился nginx, а апач пусть пока постоит.

Все поставил, все неплохо, а вот виртуальные хосты настраивать жжуть как «долго», да и лениво каждый раз одно и тоже писать. В общем нашел скрипт автоматического создания всего этого барaхла и модифицировал под свои цели. Собсвенно всем рекомендую:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#!/bin/bash

# Author: Geraschenko A [arturgspb.ru]

echo -n "Введите имя создаваемого хоста: "
read newHost

# Задаем путь до root хоста (!у вас может другое)
newPath="/var/www/${newHost}"

# Создаем директорию
mkdir "${newPath}"
sudo chmod 777 $newPath

# Определяем имя хоста
newHost="${newHost}.localhost"

#Производим запись в hosts
file="/etc/hosts"
b=$(cat $file)
newContent="127.0.0.1   ${newHost}"$'\n'"127.0.0.1      www.${newHost}"$'\n'$b
sudo bash -c "echo '${newContent}' > $file"

#Добавляем сайт в sites-available apache2  и прописываем в него нужные директивы
sap=/etc/apache2/sites-available/$newHost
sudo touch $sap
sudo chmod 777 $sap
directives="
ServerName ${newHost}
ServerAlias ${newHost} www.${newHost}
DocumentRoot ${newPath}

AllowOverride All

"

echo "$directives" > $sap

#Включаем виртуальный хост
sudo a2ensite $newHost

#Включаем rewrite
sudo a2enmod rewrite

#Перезапускаем apache2 сервер
sudo /usr/sbin/apache2ctl restart

#Добавляем сайт в sites-available nginx  и прописываем в него нужные директивы
sap=/etc/nginx/sites-available/$newHost
sudo touch $sap
sudo chmod 777 $sap

directives="server {
listen   80;
server_name  ${newHost};

location / {
root   ${newPath};
proxy_pass http://${newHost}:8080;
proxy_set_header Host \$host;
proxy_set_header X-Real-IP \$remote_addr;
proxy_set_header X-Forwarded-For \$remote_addr;
proxy_connect_timeout 120;
proxy_send_timeout    120;
}
}"

echo "$directives">$sap

# Создаем символическую ссылку на файл директив
sudo ln -s /etc/nginx/sites-available/$newHost /etc/nginx/sites-enabled/$newHost

# Перезапускаем сервер
sudo /etc/init.d/nginx restart

Похожие статьи:

  1. Развертывание LAMP на Debian/Ubuntu

Ответить


[ Ctrl + Enter ]