Nginx: различия между версиями
Перейти к навигации
Перейти к поиску
Vovan (обсуждение | вклад) (→Решение) |
Vovan (обсуждение | вклад) (→На '''Интернет сервере''' делаем...) |
||
| Строка 76: | Строка 76: | ||
nano /etc/nginx/sites-available/mysite.ru | nano /etc/nginx/sites-available/mysite.ru | ||
| − | приблизительно так: | + | приблизительно так создаем виртуальный хост для '''ВебСервера 2''' с виртуальным хостом mysite.ru: |
| − | upstream | + | upstream mysite.ru { |
| − | # Внимание!, если front-end apache имеет виртуальные хосты, то название | + | # Внимание!, если front-end apache имеет виртуальные хосты, то название ''mysite.ru'' должно совпадать с названием виртуального хоста на apache! |
# Адрес back-end'a! | # Адрес back-end'a! | ||
| − | server 192.168. | + | server 192.168.10.7:80; |
} | } | ||
server { | server { | ||
| Строка 90: | Строка 90: | ||
# Перенаправление на back-end | # Перенаправление на back-end | ||
location / { | location / { | ||
| − | proxy_pass http:// | + | proxy_pass http://mysite.ru; |
include /etc/nginx/proxy.conf; | include /etc/nginx/proxy.conf; | ||
} | } | ||
Версия 19:55, 21 августа 2009
Все познается в примерах...
Содержание
Задача
Выпустить в интернет веб-сервисы с различных ip хостов одной подсети через сервер, имеющий выход в интернет через pppoe соединение.
При этом хосты, на которых крутятся web-сервисы должны видеть только сервер, смотрящий в интернет, сами в интернет смотреть не должны.
Работающие apache на каждой из ip хостов должны в свои логи получать реальные ip адреса клиентов из интернета.
Решение
Решение делается на Ubuntu Server 8.04.3 LTS. Ориентируемся по картинке ниже...
Некоторые ссылки:
http://debianworld.ru/articles/ustanovka-nginx-kak-front-end-k-apache-v-debian-ubuntu/
http://www.opennet.ru:8101/base/net/nginx_frontend_apache.txt.html
На Интернет сервере делаем...
- Устанавливаем nginx
aptitude install nginx
- Редактируем конфиг nginx
sudo nano /etc/nginx/nginx.conf
приблизительно так:
# пользователь, от которого запускается процесс
user www-data;
# кол-во рабочих процессов. Обычно равно кол-ву ядер на машине
worker_processes 2;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log /var/log/nginx/access.log;
sendfile on;
tcp_nopush on;
keepalive_timeout 2;
tcp_nodelay on;
gzip on;
gzip_comp_level 3;
gzip_proxied any;
gzip_types text/plain text/html text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
- Останавливаем nginx:
/etc/init.d/nginx stop
- Создаем файл конфигурации proxy.conf:
proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; client_max_body_size 10m; client_body_buffer_size 128k; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffer_size 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k;
- Создаем файл виртуального хоста:
nano /etc/nginx/sites-available/mysite.ru
приблизительно так создаем виртуальный хост для ВебСервера 2 с виртуальным хостом mysite.ru:
upstream mysite.ru {
# Внимание!, если front-end apache имеет виртуальные хосты, то название mysite.ru должно совпадать с названием виртуального хоста на apache!
# Адрес back-end'a!
server 192.168.10.7:80;
}
server {
listen 80;
server_name www.mysite.ru mysite.ru;
access_log /home/site/mysite.ru/logs/nginx_access.log;
error_log /home/site/mysite.ru/logs/nginx_error.log;
# Перенаправление на back-end
location / {
proxy_pass http://mysite.ru;
include /etc/nginx/proxy.conf;
}
# Статическиое наполнение отдает сам nginx
# back-end этим заниматься не должен
# Теоретически в эту директорию nginx должен кешировать файлы, типы которых указаны.
location ~* \.(jpg|jpeg|gif|png|ico|css|bmp|swf|js)$ {
root /home/site/debianworld.ru/static/;
}
}
- Включаем новый хост:
ln -s /etc/nginx/sites-available/mysite.ru /etc/nginx/sites-enabled/mysite.ru
- Запускаем nginx
/etc/init.d/nginx start
На одном из Веб серверов делаем...
