Nginx: различия между версиями

Материал из wiki.nntc.nnov.ru
Перейти к навигации Перейти к поиску
(Решение)
(Решение)
Строка 98: Строка 98:
 
     }
 
     }
 
  }
 
  }
 +
 +
* Включаем новый хост:
 +
 +
ln -s /etc/nginx/sites-available/mysite.ru /etc/nginx/sites-enabled/mysite.ru
 +
 +
* Запускаем nginx
 +
 +
/etc/init.d/nginx start
  
  

Версия 19:50, 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

приблизительно так:

 upstream backend {
  # Внимание!, если front-end apache имеет виртуальные хосты, то название backend должно совпадать с названием виртуального хоста на apache!
  # Адрес back-end'a! 
  server 192.168.0.1:8080;
}
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://backend;
        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






Nginx11.png