- PVSM.RU - https://www.pvsm.ru -
Мы завершаем перевод цикла статей сайта cyberciti.biz [1], посвященного виртуализации LAMP-стэка [2]. Речь в заключительном материале пойдет об установке и настройке реверс-прокси nginx.
NGinx — open-source продукт, использующийся не только в качестве веб-сервера или реверс-прокси сервер. За его легковесность и бережное отношение к ресурсам его используют и в качестве балансировщика нагрузки (от тупого round-ribbon, до более осмысленного, но тут все туманно [3] прим.пер.) и/или в качестве прокси-решения для организации доступа к службам виртуальной сети, установленной в предыдущих статьях цикла, через один внешний хост-адреса, например через IP 202.54.1.1 (как это было рассмотренное в примерах прежде).
В этой статье мы разберемся, как установить NGinx в качестве обратного прокси-сервера для Apache+php5 сервера с доменным именем www.example.com [4] и сервера статики Lighttpd, который, в нашем примере, именуется static.example.com. Все настройки мы будем производить исключительно на виртуальном сервере vm00 с IP-адресом 192.168.1.1.
Убедитесь, что и www.example.com [4] и static.example.com указывают на IP-адрес 192.168.1.1.
Введите следующие команды консоли, что бы установить NGinx:
$ cd /tmp
$ wget http://nginx.org/packages/rhel/6/noarch/RPMS/nginx-release-rhel-6-0.el6.ngx.noarch.rpm
# rpm -iv nginx-release-rhel-6-0.el6.ngx.noarch.rpm
# yum install nginx
Пример ответа в консоли сервера:
Loaded plugins: rhnplugin
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package nginx.x86_64 0:1.2.1-1.el6.ngx will be installed
--> Finished Dependency Resolution
Dependencies Resolved
=========================================================================
Package Arch Version Repository Size
=========================================================================
Installing:
nginx x86_64 1.2.1-1.el6.ngx nginx 331 k
Transaction Summary
=========================================================================
Install 1 Package(s)
Total download size: 331 k
Installed size: 730 k
Is this ok [y/N]: y
Downloading Packages:
nginx-1.2.1-1.el6.ngx.x86_64.rpm | 331 kB 00:00
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Warning: RPMDB altered outside of yum.
Installing : nginx-1.2.1-1.el6.ngx.x86_64 1/1
----------------------------------------------------------------------
Thanks for using NGINX!
Check out our community web site:
* http://nginx.org/en/support.html
If you have questions about commercial support for NGINX please visit:
* http://www.nginx.com/support.html
----------------------------------------------------------------------
Verifying : nginx-1.2.1-1.el6.ngx.x86_64 1/1
Installed:
nginx.x86_64 0:1.2.1-1.el6.ngx
Complete!
Отредактируйте файл /etc/nginx/conf.d/default.conf:
# vi /etc/nginx/conf.d/default.conf
Добавив к нему, или изменим существующие строки:
## Основной реверс-прокси сервер ##
## Apache (vm02) скрипт-сервер для www.example.com ##
upstream apachephp {
server 192.168.1.11:80; #Apache1
}
## Lighttpd (vm01) сервер статики для static.example.com ##
upstream lighttpd {
server 192.168.1.10:80; #Lighttpd1
}
## Начало настроек www.example.com ##
server {
listen 202.54.1.1:80;
server_name www.example.com;
access_log /var/log/nginx/log/www.example.access.log main;
error_log /var/log/nginx/log/www.example.error.log;
root /usr/share/nginx/html;
index index.html index.htm;
## перенаправляем запросы apache1 ##
location / {
proxy_pass http://apachephp;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_redirect off;
proxy_buffering 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;
}
}
## Конец настроек www.example.com ##
## Начало настроек static.example.com ##
server {
listen 202.54.1.1:80;
server_name static.example.com;
access_log /var/log/nginx/log/static.example.com.access.log main;
error_log /var/log/nginx/log/static.example.com.error.log;
root /usr/local/nginx/html;
index index.html;
location / {
proxy_pass http://lighttpd;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_redirect off;
proxy_buffering off;
proxy_set_header Host static.example.com;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
## Конец настроек static.example.com ##
Введите следующие команды:
# chkconfig nginx on
# service nginx start
Установите следующие настройки брандмауэра:
Для установки этих параметров произведем следующие действия:
# system-config-firewall-tui
Вы можете отредактировать /etc/sysconfig/iptables вручную и, также, настроить брандмауэр (читайте дополнительно в статье на сайте cyberciti.biz [5])
Отредактируем /etc/sysctl.conf следующим образом:
# Execshild
kernel.exec-shield = 1
kernel.randomize_va_space = 1
# IPv4 settings
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.secure_redirects = 0
net.ipv4.conf.all.log_martians = 1
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.default.secure_redirects = 0
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
# Increase system file descriptor limit to
fs.file-max = 50000
# Increase system IP port limits
net.ipv4.ip_local_port_range = 2000 65000
# Ipv6
net.ipv6.conf.default.router_solicitations = 0
net.ipv6.conf.default.accept_ra_rtr_pref = 0
net.ipv6.conf.default.accept_ra_pinfo = 0
net.ipv6.conf.default.accept_ra_defrtr = 0
net.ipv6.conf.default.autoconf = 0
net.ipv6.conf.default.dad_transmits = 0
net.ipv6.conf.default.max_addresses = 1
Загрузим новые настройки ядра Linux следующей командой:
# sysctl -p
Для детальной информации об указанных директивах настройки ядра Linux [6] читайте соответствующем faq.
Смотрите дополнительно пост «Топ-20 практик безопасности веб-сервера NGinx [7]». Так же, в качестве доп.материалов о настройках NGinx, реверс-прокси и SSL смотрите в материалах уроков:
Надеюсь, данное руководство послужит хорошим подспорьем при настройке виртуальных машин, а информация окажется, в достаточной мере, полезной, что бы вы смогли начать настройку собственного web-стека на вашем CentOS /RHEL сервере самостоятельно.
От переводчика:
В цикле статей присутствует порядка 50 внешних ссылок на материалы сайта cyberciti. С моей стороны было бы не очень честно оставить читателей один на один с анлийским текстом (иначе, стали бы мы читать переводы). Предложение такое: вот топ ссылок, которые упоминаются наиболее часто в переведенном материале:
Что мне самому сейчас интересно, т.е. что я планирую перевести в самые ближайшие дни — в нижнем списке. Если есть что-то, что требует перевода или дубляжа и имеет такую запредельную ценность, как доклады Yoshinori Matsunobu — предлагайте, будем читать/переводить.
O'Reilly MySQL Conference & Expo Is a Wrap // 2011 web [60]
Круг интересов: серверное администрирование, оптимизация и мониторинг LAMP-стэка. Виртуализация, IaaS, KVM, xfs, NFS. Так же интересно: hPHP (hip-hop PHP), WordPress.
От вас — ссылка на материал, от меня — перевод и поклон.
Если знаете конференции, помимо (O’Reilly Velocity, NJ-LOPSA PICC, Tech Ed, LinuxCon), публикующие материалы/презентации/видео — буду выбирать темы на свой вкус и предлагать на ваш выбор.
Автор: danielnewman
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/nginx/12294
Ссылки в тексте:
[1] cyberciti.biz: http://cyberciti.biz/
[2] виртуализации LAMP-стэка: http://www.cyberciti.biz/tips/run-different-network-services-on-separate-vm-systems.html
[3] все туманно: http://habrahabr.ru/qa/22072/
[4] www.example.com: http://www.example.com
[5] в статье на сайте cyberciti.biz: http://www.cyberciti.biz/faq/rhel-fedorta-linux-iptables-firewall-configuration-tutorial/
[6] директивах настройки ядра Linux: http://www.cyberciti.biz/faq/linux-kernel-etcsysctl-conf-security-hardening/
[7] Топ-20 практик безопасности веб-сервера NGinx: http://www.cyberciti.biz/tips/linux-unix-bsd-nginx-webserver-security.html
[8] CentOS / Redhat Linux: установка Keepalive для обеспечения отказоустойчивости web-кластера: http://www.cyberciti.biz/faq/rhel-centos-fedora-keepalived-lvs-cluster-configuration/
[9] nginx: Установка сбалансированного SSL реверс-прокси (Load Balanced SSL Proxy): http://www.cyberciti.biz/faq/howto-linux-unix-setup-nginx-ssl-proxy/
[10] 20 приемов повышения безопасности на Linux-серверах: http://www.cyberciti.biz/tips/linux-security.html
[11] 25 лучших практик настройки безопасности PHP для сис.админов: http://www.cyberciti.biz/tips/php-security-best-practices-tutorial.html
[12] Top-20 лучших практик безопасности OpenSSH-сервера: http://www.cyberciti.biz/tips/linux-unix-bsd-openssh-server-best-practices.html
[13] Советы по защите физического доступа к консоли Linux-сервера: http://www.cyberciti.biz/tips/tips-to-protect-linux-servers-physical-console-access.html
[14] Вводная часть: http://habrahabr.ru/post/147864/
[15] Шаг №1: Настройка / Установка: NFS файловый сервер: http://habrahabr.ru/post/148004/
[16] Шаг №2: Настройка / установка: сервер баз данных MySQL: http://habrahabr.ru/post/148077/
[17] Шаг №3: Настройка / Установка: Memcached сервера кэширования: http://habrahabr.ru/post/148488/
[18] Шаг №4: Настройка / Установка: Apache + php5 приложение веб-сервера: http://habrahabr.ru/post/148489/
[19] Шаг №5: Настройка / Установка: веб-сервер Lighttpd для статических активов: http://habrahabr.ru/post/148490/
[20] Шаг №6: Настройка / Установка: Nginx обратный (reverse) прокси-сервер: http://habrahabr.ru/post/148491/
[21] о запуске iptables: http://www.cyberciti.biz/faq/howto-start-iptables-under-rhel-centos-linux/
[22] Установка nfsv4 сервера на CentOS/RHEL: http://www.cyberciti.biz/faq/centos-fedora-rhel-nfs-v4-configuration/
[23] yum-менеджер пакетов: http://www.cyberciti.biz/faq/rhel-centos-fedora-linux-yum-command-howto/
[24] Создание учетной записи нового пользователя в linux: http://www.cyberciti.biz/faq/howto-add-new-linux-user-account/
[25] об изменении sysctl-параметров ядра: http://www.cyberciti.biz/faq/making-changes-to-proc-filesystem-permanently/
[26] о расширении диапозона доступных IP-портов: http://www.cyberciti.biz/tips/linux-increase-outgoing-network-sockets-range.html
[27] NGinx в качестве реверс-прокси: http://www.cyberciti.biz/tips/using-nginx-as-reverse-proxy.html
[28] О методах увеличении максимального числа файловых дескриптеров (FD): http://www.cyberciti.biz/faq/linux-increase-the-maximum-number-of-open-files/
[29] www.php.net/array: http://www.php.net/array
[30] www.cyberciti.biz/faq/mysql-user-creation/: http://www.cyberciti.biz/faq/mysql-user-creation/
[31] www.cyberciti.biz/tips/open-source-project-management-software.html: http://www.cyberciti.biz/tips/open-source-project-management-software.html
[32] www.cyberciti.biz/faq/linux-demilitarized-zone-howto/: http://www.cyberciti.biz/faq/linux-demilitarized-zone-howto/
[33] www.cyberciti.biz/faq/restart-httpd/: http://www.cyberciti.biz/faq/restart-httpd/
[34] www.cyberciti.biz/faq/how-do-i-start-and-stop-nfs-service/: http://www.cyberciti.biz/faq/how-do-i-start-and-stop-nfs-service/
[35] www.cyberciti.biz/tips/linux-laptop.html: http://www.cyberciti.biz/tips/linux-laptop.html
[36] www.cyberciti.biz/faq/centos-fedora-rhel-iptables-open-nfs-server-ports/: http://www.cyberciti.biz/faq/centos-fedora-rhel-iptables-open-nfs-server-ports/
[37] www.cyberciti.biz/faq/linux-install-and-start-apache-httpd/: http://www.cyberciti.biz/faq/linux-install-and-start-apache-httpd/
[38] www.cyberciti.biz/faq/rhel-fedora-centos-linux-temporarily-switchoff-selinux/: http://www.cyberciti.biz/faq/rhel-fedora-centos-linux-temporarily-switchoff-selinux/
[39] www.cyberciti.biz/faq/linux-make-directory-command/: http://www.cyberciti.biz/faq/linux-make-directory-command/
[40] www.cyberciti.biz/faq/howto-disable-httpd-selinux-security-protection/: http://www.cyberciti.biz/faq/howto-disable-httpd-selinux-security-protection/
[41] www.cyberciti.biz/tips/top-linux-monitoring-tools.html: http://www.cyberciti.biz/tips/top-linux-monitoring-tools.html
[42] www.php.net/isset: http://www.php.net/isset
[43] www.cyberciti.biz/tips/linux-iptables-examples.html: http://www.cyberciti.biz/tips/linux-iptables-examples.html
[44] bash.cyberciti.biz/mysql/add-database-username-password-remote-host-access/: http://bash.cyberciti.biz/mysql/add-database-username-password-remote-host-access/
[45] dev.mysql.com/doc/refman/5.5/en/: http://dev.mysql.com/doc/refman/5.5/en/
[46] www.cyberciti.biz/faq/tag/etcfstab/: http://www.cyberciti.biz/faq/tag/etcfstab/
[47] www.cyberciti.biz/faq/fedora-sl-centos-redhat6-enable-epel-repo/: http://www.cyberciti.biz/faq/fedora-sl-centos-redhat6-enable-epel-repo/
[48] www.cyberciti.biz/faq/tag/etcsysconfigmemcached/: http://www.cyberciti.biz/faq/tag/etcsysconfigmemcached/
[49] www.cyberciti.biz/tips/my-10-unix-command-line-mistakes.html: http://www.cyberciti.biz/tips/my-10-unix-command-line-mistakes.html
[50] www.cyberciti.biz/tips/download-email-client-for-linux-mac-osx-windows.html: http://www.cyberciti.biz/tips/download-email-client-for-linux-mac-osx-windows.html
[51] www.cyberciti.biz/tips/how-do-i-enable-remote-access-to-mysql-database-server.html: http://www.cyberciti.biz/tips/how-do-i-enable-remote-access-to-mysql-database-server.html
[52] www.cyberciti.biz/faq/linux-unix-bsd-wordpress-memcached-cache-plugin/: http://www.cyberciti.biz/faq/linux-unix-bsd-wordpress-memcached-cache-plugin/
[53] www.cyberciti.biz/faq/howto-install-memcached-under-rhel-fedora-centos/: http://www.cyberciti.biz/faq/howto-install-memcached-under-rhel-fedora-centos/
[54] www.cyberciti.biz/faq/how-to-install-mysql-under-rhel/: http://www.cyberciti.biz/faq/how-to-install-mysql-under-rhel/
[55] www.cyberciti.biz/tips/unix-linux-bsd-pydf-command-in-colours.html: http://www.cyberciti.biz/tips/unix-linux-bsd-pydf-command-in-colours.html
[56] www.cyberciti.biz/faq/how-to-mount-bind-partitions-filesystems-in-linux/: http://www.cyberciti.biz/faq/how-to-mount-bind-partitions-filesystems-in-linux/
[57] www.cyberciti.biz/faq/rhel-fedora-linux-install-memcached-caching-system-rpm/: http://www.cyberciti.biz/faq/rhel-fedora-linux-install-memcached-caching-system-rpm/
[58] www.phpmyadmin.net/home_page/index.php: http://www.phpmyadmin.net/home_page/index.php
[59] www.cyberciti.biz/faq/stop-lighttpd-server/: http://www.cyberciti.biz/faq/stop-lighttpd-server/
[60] web: http://en.oreilly.com/mysql2011/public/schedule/proceedings
[61] web: http://www.scribd.com/doc/53197944/3/bit-Linux-large-web-BBWC
[62] .ppt: http://assets.en.oreilly.com/1/event/56/MySQL%20and%20Linux%20tuning%20-%20better%20together%20Presentation.ppt
[63] web: http://en.oreilly.com/mysql2011/public/schedule/detail/17160
Нажмите здесь для печати.