Примечания Nginx: обратный прокси-сервер, выпуск проекта и построение кластера

сервер Nginx Tomcat

Введение

1.1 Эволюция крупномасштабной архитектуры Интернета

1.1.1 Технология Таобао

Основная технология Taobao (лучшие отечественные и международные, это данные за 2011 год)

  • Имеет самый большой распределенный кластер Hadoop в стране (облачная лестница, около 2000 узлов, 24000 ядер ЦП, 48000 ГБ памяти, емкость хранилища 40 ПБ)
  • 80+ узлов CDN распределены по всей стране, которые могут автоматически найти ближайший узел для предоставления услуг и поддержки трафика, превышающего 800 Гбит/с.
  • Не меньше, чем поисковая система Baidu, ищущая миллиарды товаров, крупнейшая в мире платформа электронной коммерции.
  • Лучшая система балансировки нагрузки, лучшая распределенная система, лучшее интернет-мышление, разнообразные функции, чрезвычайно стабильная работа
  • Богатая экологическая промышленность и передовые технологии интеллектуального анализа данных
  • ……очень много

1.1.2 Эволюция технологии Taobao

Отрывок из «Десять лет технологии Taobao»

  • 7 апреля 2003 г. г-н Ма тайно вызвал десять сотрудников Alibaba в потайной дом в Ханчжоу и попросил их создать веб-сайт C2C в течение месяца или около того. Результатом, конечно же, является покупка напрямую, веб-сайт, основанный на архитектуре LAMP, ранее известный как PHPAuction, веб-сайт аукциона, разработанный Laomei. Конечно, его нужно модифицировать, прежде чем его можно будет использовать.
  • В конце 2003 года на Taobao было 230 000 зарегистрированных пользователей, 310 000 просмотров в день, а полугодовой оборот составил 33,71 миллиона.
  • Очевидно, что MySQL не может поддерживать такой большой объем доступа, и возникает узкое место в базе данных. К счастью, у Али достаточно сильная команда администраторов баз данных, и вместо MySQL они использовали Oracle. В то время у Oracle уже была мощная конструкция параллельного доступа — пул соединений, и стоимость выборки соединений из пула соединений была намного меньше, чем установка соединений по отдельности. Однако в то время PHP официально не поддерживал функцию пула языковых соединений, поэтому Duolong использовал Google (не Baidu) для поиска SQL Relay с открытым исходным кодом, поэтому узкое место в программном обеспечении базы данных было временно устранено.
  • Затем, столкнувшись с узким местом в производительности оборудования, Али купил устройство хранения SAN от EMC в сочетании с высокопроизводительным RAC от Oracle, аппаратная емкость временно не является проблемой.
  • Поскольку проблема SQL Relay слишком серьезна, в 2004 году Taobao, наконец, приняла межпоколенческое решение — переписать веб-сайт с использованием Java.
  • Taobao пригласила старших инженеров Sun помочь с архитектурой Java. Так как же они модифицировали язык программирования, не изменив использование сайта?Модульная замена, я сегодня написал модуль А, открыл новое доменное имя, указал подключение к этому модулю, а остальные модули остались без изменений, и ждал, пока все модули После завершения исходное доменное имя забрасывается. Настойчивость Sun в использовании EJB в качестве уровня управления в сочетании с использованием iBatis в качестве уровня сохраняемости привела к созданию масштабируемого и эффективного приложения Java EE.
  • После отправки больших коров Sun, хранилище данных Али снова столкнулось с узким местом, поэтому он неохотно купил миникомпьютер IBM, и есть такая легенда, как IOE (IBM + Oracle + EMC).
  • В конце 2004 года на Taobao было 4 миллиона зарегистрированных пользователей, 40 миллионов PV в день, а общий оборот сети составлял 1 миллиард.
  • Spring появился на свет в 2005. Давно известно, что среда Spring незаменима в веб-приложениях.На Taobao.com Spring также достиг цели, заложенной Родом Джонсоном — заменить EJB.
  • В конце 2005 года на Taobao было 13,9 миллиона зарегистрированных пользователей, 89,31 миллиона просмотров в день и 16,63 миллиона товаров.
  • Учитывая будущее развитие, такая архитектура объекта едва ли способна справиться с текущими требованиями. В результате технология CDN пригодилась.Сначала использовался коммерческий ChinaCache, а затем доктор Чжан Венсонг использовал для построения сети CDN с низким энергопотреблением.Производительность Taobao становилась все лучше и лучше.
  • В конце 2006 года на Taobao было 30 миллионов зарегистрированных пользователей, 150 миллионов просмотров в день, 50 миллионов товаров, а общий оборот сети составлял 16,9 миллиарда юаней.
  • До 2007 года Taobao использовала коммерческую систему хранения NetApp, но этого было недостаточно, чтобы справиться с быстро растущей тенденцией. В том же году Google объявил об идее дизайна GFS. Со ссылкой на свою идею Taobao также разработала свою собственную файловую систему-TFS.Каждый пользователь имеет 1 ГБ места для хранения изображений в TFS, который использует систему хранения файлов кластер TFS и множество серверов изображений. Taobao использует генерацию эскизов изображений в реальном времени, глобальную балансировку нагрузки и кэши первого и второго уровня для обеспечения оптимального и эффективного доступа к изображениям.
  • Серверное программное обеспечение Taobao использует Tengine, оптимизированный модуль nginx.
  • Taobao отделяет UIC (информационный центр пользователя) для всех модулей для вызова. Сеньор Долонг снова написал для него TDBM, который полностью основан на кеше данных памяти (см. memcached). Затем Taobao объединила TBstore и TDBM, чтобы написать Tair, систему данных распределенного кэша, основанную на ключе-значении. Затем я обновил свою систему iSearch.
  • В конце 2007 года на Taobao было 50 миллионов зарегистрированных пользователей, 250 миллионов просмотров в день, 100 миллионов товаров и 43,3 миллиарда юаней продаж.
  • ......
  • Dubbo — это основная структура внутреннего решения Alibaba по управлению SOA на основе сервисов, обеспечивающего более 300 000 000 посещений в день для более чем 2 000 сервисов и широко используемого на различных сайтах-членах Alibaba Group. Поскольку исходный код Dubbo был открыт в 2011 году, его использовали многие компании, не входящие в Alibaba.

1.2.3 Краткий обзор развития технологий

1. Архитектура с одним узлом

2. Кластерная архитектура

3. Кластер + распределенная архитектура

1.2 Обзор прокси

1.2.1 Прямой прокси

В целом, если не указано иное, технология прокси по умолчанию относится к технологии прямого прокси. Концепция прямого прокси заключается в следующем:

Форвардный прокси (форвард) — это сервер [прокси-сервер Z], расположенный между клиентом [пользователем А] и сервером-источником [сервер B].Для получения контента с сервера-источника пользователь А отправляет на прокси-сервер Z a A запрос и указав цель (сервер B), то прокси-сервер Z перенаправляет запрос на сервер B и возвращает полученный контент клиенту. Клиенты должны выполнить некоторые специальные настройки, чтобы использовать прямой прокси.

Из вышеприведенной концепции видно, что так называемаяпрямой проксиэтоПрокси-сервер заменяет посетителя [Пользователь A] для доступа к целевому серверу [Сервер B].

Вот что такое прямое проксирование. И зачем использовать прокси-сервер, чтобы заменить посетителя [пользователя А] для доступа к серверу Б? Это начинается со значения использования прокси-сервера.

Основные функции использования форвардного прокси-сервера следующие:

  1. Доступ к недоступному серверу B, как показано на рисунке

    Давайте посмотрим на приведенный выше рисунок без сложного графика сетевой маршрутизации, предполагая, что маршрутизаторы названы R1 и R2 слева направо на рисунке. Предположим, что пользователю А изначально необходимо пройти через узел маршрутизации, такой как маршрутизаторы R1 и R2, для доступа к серверу B. Если маршрутизатор R1 или маршрутизатор R2 выходит из строя, доступ к серверу B будет недоступен. Но если пользователь A просит прокси-сервер Z получить доступ к серверу B вместо себя, поскольку прокси-сервер Z не находится в узле маршрутизатора R1 или R2, а обращается к серверу B через другие узлы маршрутизации, то пользователь A может получить данные сервера B. Реальный пример — FQ. Однако, поскольку технология VPN широко используется, FQ использует не только традиционную технологию прямого прокси, но и технологию VPN.

  2. Ускорить доступ к серверу B

    Это утверждение не так популярно, как когда-то, в основном из-за быстрого развития пропускной способности трафика. В раннем прямом прокси многие люди использовали прямой прокси для ускорения. Как показано на рисунке выше, предположим, что пользователь A переходит на сервер B через маршрутизатор R1 и маршрутизатор R2, а канал от R1 к маршрутизатору R2 является каналом с низкой пропускной способностью. И пользователь A к прокси-серверу Z, и от прокси-сервера Z к серверу B являются высокоскоростными ссылками. Тогда очевидно, что доступ к серверу Б можно ускорить.

  3. Роль кэша

    Технология кэширования (cache) и технология обслуживания прокси тесно связаны (не только прямой прокси, обратный прокси также использует технологию Cache (кэш). Кто-то получил доступ к данным D на сервере B через прокси-сервер Z, то прокси-сервер Z будет сохраняйте данные D в течение определенного периода времени. Отправьте их непосредственно пользователю A. Этот метод называется попаданием в кэш в терминах кэша. Если есть больше пользователей, таких как пользователь A, для доступа к прокси-серверу Z, то эти пользователи могут получить данные D непосредственно с прокси-сервера Z, и нет необходимости проходить весь путь до сервера B для загрузки данных.

  4. Авторизация доступа клиента

    Этот аспект контента все еще широко используется сегодня.Например, некоторые компании используют ISA SERVER в качестве прямого прокси-сервера, чтобы авторизовать, имеют ли пользователи разрешение на доступ в Интернет, как показано на следующем рисунке.

    Используйте брандмауэр в качестве шлюза для фильтрации доступа к нему из внешней сети. Предполагая, что и пользователь A, и пользователь B настроили прокси-серверы, пользователю A разрешен доступ в Интернет, но пользователю B не разрешен доступ в Интернет (это ограничено на прокси-сервере Z), поэтому пользователь A может получить доступ к серверу. B через прокси-сервер из-за авторизации. Однако, поскольку пользователь B не авторизован прокси-сервером Z, при доступе к серверу B пакет данных будет напрямую отброшен.

  5. Скрыть местонахождение вашего посетителя

    Как показано на рисунке ниже, мы видим, что сервер B не знает, что пользователь A на самом деле обращается к себе, потому что прокси-сервер Z заменяет пользователя A для прямого взаимодействия с сервером B. Если прокси-сервер Z полностью контролируется (или не полностью контролируется) пользователем А, он будет называться «бройлерным» термином.

Подводя итог: прямой прокси-сервер — это сервер, который находится между клиентом и исходным сервером.Чтобы получить контент с исходного сервера, клиент отправляет запрос на прокси-сервер с указанием цели (исходный сервер), а прокси-сервер отправляет источник server Перенаправить запрос и вернуть полученный контент клиенту. Клиент должен установить прямой прокси-сервер, конечно, предпосылкой является знание IP-адреса прямого прокси-сервера и порта программы-агента.

1.2.2 Обратный прокси

Обратный прокси-сервер — это полная противоположность прямому прокси-серверу.Прокси-сервер подобен исходному серверу для клиента, и клиенту не нужно выполнять какие-либо специальные настройки. Клиент отправляет обычный запрос к контенту в пространстве имен (name-space) обратного прокси-сервера, а затем обратный прокси-сервер определяет, куда (исходный сервер) перенаправить запрос, и возвращает полученный контент клиенту. Роль использования обратного прокси-сервера заключается в следующем:

  1. Защитите и скройте исходный сервер ресурсов, как показано ниже:

    Пользователь A всегда думает, что он обращается к исходному серверу B, а не к прокси-серверу Z, но на самом деле обратный прокси-сервер принимает ответ от пользователя A, получает требуемый ресурс пользователя A от исходного сервера ресурсов B, а затем отправляет это пользователю А. Из-за брандмауэра только прокси-серверу Z разрешен доступ к исходному ресурсному серверу B. Хотя в этой виртуальной среде комбинированный эффект брандмауэра и обратного прокси-сервера защищает исходный сервер ресурсов B, пользователь A не знает об этом.

  2. Балансировка нагрузки, как показано ниже:

    Когда есть более одного обратного прокси-сервера, мы можем даже сделать их кластерами.Когда больше пользователей обращаются к ресурсному серверу B, пусть разные прокси-серверы Z(x) отвечают разным пользователям, а затем отправляют разным пользователям необходимые ресурсы.

    Конечно, обратный прокси-сервер имеет ту же функцию кэширования, что и прямой прокси-сервер.Он может кэшировать ресурсы исходного сервера ресурсов B вместо того, чтобы каждый раз запрашивать данные с исходного сервера ресурсов B, особенно некоторые статические данные, такие как изображения. и если эти обратные прокси-серверы могут поступать из той же сети, что и пользователь X, то пользователь X получит очень высокую скорость при доступе к обратному прокси-серверу X. Это ядро ​​технологии CDN. Как показано ниже:

    Мы не объясняем CDN, поэтому мы удалили наиболее важную базовую технологию CDN, интеллектуальный DNS. Это просто показывает, что технология CDN на самом деле использует принцип обратного прокси.

Вывод обратного прокси-сервера противоположен прямому прокси-серверу, он действует как исходный сервер для клиента, и клиенту не нужно выполнять какую-либо специальную настройку. Клиент отправляет обычный запрос к содержимому в пространстве имен (пространстве имен) обратного прокси-сервера, а затем обратный прокси-сервер определяет, куда (исходный сервер) перенаправить запрос и вернуть полученное содержимое клиенту, как это. изначально свое.

По сути, существует множество программ, которые выполняют прямой и обратный прокси-сервер в Интернете, и большая часть программного обеспечения, которое может выполнять прямой прокси-сервер, также может выполнять обратный прокси-сервер. Наиболее популярным программным обеспечением с открытым исходным кодом является Squid, который можно использовать как в качестве прямого прокси-сервера, так и в качестве внешнего прокси-сервера, используемого многими людьми в качестве обратного прокси-сервера. Кроме того, MS ISA также можно использовать в качестве прямого прокси-сервера на платформе Windows. Наиболее важной практикой обратного прокси является веб-сервис, и Nginx является наиболее популярным в последние годы. Некоторые люди в Интернете говорят, что Nginx не может быть прямым прокси, но это не так. Nginx также можно использовать в качестве прямого прокси, но его использует меньше людей.

1.2.3 Прозрачный прокси

Если прямой прокси, обратный прокси и прозрачный прокси разделены в соответствии с кровным родством человека. Тогда прямой прокси и прозрачный прокси, очевидно, являются двоюродными братьями, а прямой прокси и обратный прокси — двоюродными братьями.

Прозрачный прокси означает, что клиенту вообще не нужно знать о существовании прокси-сервера, он адаптирует ваши поля запроса (сообщения) и будет отправлять реальный IP. Обратите внимание, что зашифрованный прозрачный прокси принадлежит к анонимному прокси, а это значит, что нет необходимости устанавливать прокси. Примером прозрачной практики использования прокси является программное обеспечение для управления поведением, которое сегодня используют многие компании. Как показано ниже:

Пользователь A и пользователь B не знают, что устройство управления поведением действует как прозрачный прокси-сервер Когда пользователь A или пользователь B отправляет запрос на сервер A или сервер B, прозрачное прокси-устройство перехватывает и изменяет сообщение пользователя A или B в соответствии с к своей собственной политике и как фактический запросчик отправляет запрос на сервер А или Б. Когда информация получена обратно, прозрачный прокси-сервер отправляет разрешенное сообщение обратно пользователю А или Б в соответствии со своими настройками, как показано на рисунке выше, если настройки прозрачного прокси не разрешают ему доступ к серверу B, то пользователь A или пользователь B не получат данные сервера B.

2. Опубликовать проект под Linux

Используется: система CentOS

2.1 Установите JDK в системе Linux

После входа в систему Linux сначала проверьте, установлен ли jdk, и запустите:java -version, если есть OpenJDK, удаляем его, устанавливаем и пользуемся SunJDK. О разнице между ними:

1. Удалите OpenJDK

  • Проверьте пакеты, связанные с java:rpm –qa | grep java

  • Удалить OpenJDK

    • Сначала удалите openjdk 1.7:rpm -e --nodeps java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.i686

    • Затем удалите openjdk 1.6:rpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.i686

2. Установите jdk: (загрузите jdk, загрузите через программное обеспечение ftp, загрузите в корневой каталог)

  • Создайте каталог java в /usr/local:mkdir java

  • Скопируйте загруженный jdk в каталог java:cp /root/jdk.xxxxx.tar /usr/local/java

  • Разархивируйте его:tar -xvf jdk.xxx.tar

  • Установить зависимости:yum install glibc.i686

    Чтобы запустить и использовать наш jdk, нам также нужно установить некоторые плагины, как и наш java, нижний слой зависит от некоторых вещей языка C++, C.

    О yum, учебнике для новичков:линукс ням команда

  • Настройте переменные среды:

    编辑  vi /etc/profile
    在文件最后添加一下信息
        #set java environment
        JAVA_HOME=/usr/local/java/jdk1.7.0_72
        CLASSPATH=.:$JAVA_HOME/lib.tools.jar
        PATH=$JAVA_HOME/bin:$PATH
        export JAVA_HOME CLASSPATH PATH
    保存退出
    source /etc/profile  重新加载配置文件,使更改的配置立即生效
    

Примечание. О том, как загружать файлы в корневой каталог, вы можете использовать программное обеспечение FileZilla, чтобы напрямую перетаскивать файлы в этот каталог, чтобы завершить загрузку.

2.2 Установите MySQL в системе Linux

  1. Проверьте, соблюдается ли mysql:rpm -qa | grep mysql

  2. Удалите mysql, который поставляется с системой:rpm -e --nodeps mysql-libs-5.1.71-1.el6.i386

  3. загрузить пакет mysql

  4. Создайте каталог mysql в /usr/local/

  5. Скопируйте пакет mysql в каталог mysql

  6. Распаковать tar:tar -xvf MySQL-5.6.22-1.el6.i386.rpm-bundle.tar, будет несколько rpm-файлов, например:

  7. Установить

    • Установите серверную часть mysql:rpm -ivh MySQL-server-5.5.49-1.linux2.6.i386.rpm

      Примечание. Вам не нужен пароль при первом входе в mysql, и он понадобится вам в будущем.

    • Установите клиент mysql:rpm -ivh MySQL-client-5.5.49-1.linux2.6.i386.rpm

  8. Проверьте статус службы mysql:service mysql status

    • Запустите mysql:service mysql start
    • Остановить MySQL:service mysql stop
  9. Изменить пароль корня mysql

    登录:mysql -uroot
    修改密码:
        use mysql;
        update user set password = password('1234') where user = 'root';
        flush privileges;# 刷新
    
  10. Включить удаленный доступ

    grant all privileges on *.* to 'root' @'%' identified by '1234';
    flush privileges;
    
  11. Откройте порт брандмауэра 3306 для выхода из mysql

    3306端口放行 
    /sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
    将该设置添加到防火墙的规则中
    /etc/rc.d/init.d/iptables save
    

    Протестируйте соединение с базой данных mysql, соединение установлено успешно:

  12. Настройте службу mysql для запуска при запуске системы.

    加入到系统服务:
    chkconfig --add mysql
    自动启动:
    chkconfig mysql on
    

2.3 Установка Tomcat в системе Linux

  1. Создайте каталог tomcat в /usr/local/:mkdir tomcat

  2. Скопируйте кота в /usr/local/tomcat:cp /root/apache-tomcat-7.0.52.tar.gz ./tomcat/

  3. Распаковать кота:tar -xvf apache-tomcat-7.0.52.tar.gz

  4. Запустите tomcat и введите bin:

    • метод первый:sh startup.sh

    • Способ второй:./startup.sh

    Уведомление:

    查看日志文件
    tail -f logs/catalina.out
    退出 ctrl+c
    
  5. Открытый порт номер 8080:

    8080端口放行 
    /sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
    将该设置添加到防火墙的规则中
    /etc/rc.d/init.d/iptables save
    

2.4 Публикация проекта в Linux

  1. Базы данных и таблицы

    ①备份store28的数据库:
    在windows下:mysqldump -uroot -p1234 store28 > C:/1.sql
    
    ②将C盘下的1.sql上传到Linux下的root目录
    
    ③通过远程工具还原数据库
        先登录mysql
        创建数据库 store28
        进入store28
        	source /root/1.sql
    
  2. проект

    ①将项目打包 war
    	war包的特点:
    		在tomcat/webapps目录下 只要tomcat启动 war会自动解压
    ②将store.war上传到Linux系统下的root目录下
    ③将store.war移动到tomcat/webapps下即可
    

3. Нгинкс

3.1 Концепции, связанные с nginx

Прежде чем представить Ngnix, давайте рассмотрим несколько концепций, связанных с Ngnix.

1. Обратный прокси

Обратный прокси означает, что прокси-сервер принимает запросы на подключение в Интернете, затем перенаправляет запрос на сервер во внутренней сети и возвращает результат, полученный от сервера, клиенту, запрашивающему подключение в Интернете. выглядит как сервер для внешнего мира.

2. Балансировка нагрузки

Балансировка нагрузки, английское название Load Balance, относится к созданию существующей сетевой структуры и предоставлению дешевого, эффективного и прозрачного метода расширения полосы пропускания сетевых устройств и серверов, увеличения пропускной способности, усиления возможностей обработки сетевых данных и повышения производительности сети. , гибкость и доступность. Принцип заключается в том, что трафик данных распределяется между несколькими серверами для выполнения, что снижает нагрузку на каждый сервер, а несколько серверов работают вместе для выполнения рабочих задач, тем самым повышая пропускную способность данных.

3.2 Введение в nginx

1. Что такое nginx?

Nginx (engine x) — высокопроизводительныйHTTPиобратный проксислужба, также является службой IMAP/POP3/SMTP. Nginx был разработан Игорем Сесоевым для второго по посещаемости сайта в России Rambler.ru (русский язык: Рамблер), а первая общедоступная версия 0.1.0 была выпущена 4 октября 2004 года.

Он выпускает исходный код под лицензией, подобной BSD, и известен своей стабильностью, богатым набором функций, образцами файлов конфигурации и низким потреблением системных ресурсов. 1 июня 2011 года был выпущен nginx 1.0.4.

Nginx — это легкий сервер обратного прокси-сервера и прокси-сервер электронной почты (IMAP/POP3), выпущенный по протоколу, подобному BSD. Его характеристики заключаются в том, что он занимает меньше памяти и обладает сильными возможностями параллелизма.На самом деле, возможности параллелизма nginx действительно лучше среди веб-серверов того же типа.Пользователи веб-сайтов nginx в материковом Китае включают: Baidu, JD.com, Sina , NetEase, Tencent, Taobao и т. д. (Взято изЭнциклопедия Байду)

2. Зачем использовать nginx?

задний план:

С быстрым развитием Интернета сегодня большое количество пользователей и высокий уровень параллелизма стали основной частью Интернета. Как веб-сайт может поддерживать непрерывные посещения десятков тысяч или сотен тысяч пользователей? Это проблема, которую срочно необходимо решить некоторым малым и средним веб-сайтам. Веб-сайт, созданный с помощью автономного Tomcat, в идеальном состоянии может выдержать от 150 до 200 одновременных посещений. Согласно подсчетам, количество одновременных посещений составляет от 5% до 10% от общего числа пользователей, количество пользователей одного веб-сайта tomcat составляет от 1500 до 4000. Одному сайту явно недостаточно обслуживать всю страну, для решения этой проблемы вводится метод балансировки нагрузки. Балансировка нагрузки — это проблема, которую веб-сервер не может решить. Ее можно решить, разделив нагрузку на несколько веб-серверов. Параллельные запросы равномерно распределяются между несколькими фоновыми веб-серверами для обработки, так что нагрузка распределяется.

Существует два типа серверов балансировки нагрузки.Одним из них является сервер балансировки нагрузки, реализованный на аппаратном уровне, который называется жесткой нагрузкой, например: f5. Другой — балансировка нагрузки, реализуемая программным обеспечением, называемая мягкой нагрузкой, такой как apache и nginx. По сравнению с мягкой загрузкой первый имеет больше сетевых уровней, его можно применить к канальному уровню интерфейса сокета для пересылки запросов в пакетах, но цена относительно высока, а уровень мягкой нагрузки находится между http HTTP-запросы могут пересылаться группами, а поскольку это открытый исходный код, стоимость практически нулевая, а веб-сайты электронной коммерции, такие как Alibaba и Jingdong, используют серверы Nginx.

Многие крупные веб-сайты используют nginx в качестве обратного прокси-сервера, который широко используется. Nginx — это высокопроизводительный http-сервер/обратный прокси-сервер и прокси-сервер электронной почты (IMAP/POP3). Официальный тестовый nginx, разработанный российским программистом Игорем Сысоевым, может поддерживать 50 000 одновременных подключений, потребление процессора, памяти и других ресурсов очень низкое, а работа очень стабильная.

Сценарии применения:

  1. http-сервер, который можно использовать в качестве http-сервера для статических веб-страниц.

  2. Настройте виртуальную машину. Доменное имя может быть привязано к нескольким IP-адресам. Запросы могут перенаправляться на серверы, работающие на разных портах, в зависимости от имени домена.

  3. Обратный прокси, балансировка нагрузки. Перенаправить запрос на другой сервер.

В-четвертых, создайте кластер

4.1 Построение кластера под Windows

1. Создайте два новых каталога tomcat1 и tomcat2 на диске G.

2. Измените порт tomcat2, например, +10 на основе порта tomcat1, после модификации запустите два кота, а затем зайдите на них по отдельности

  • Порт доступа 8080:localhost:8080/test/

  • Порт доступа 8090:localhost:8090/test/

3. Разархивируйте nginx

Изменить ngnixnginx.confфайл, добавьте обратный прокси-сервер в папку / на прокси-порт 8080:

Вышеупомянутое просто прокси для сервера. Запуск nginx, каждое посещениеlocalhost/test/, последний доступ - это данные сервера порта 8080.

4. Прокси-кластер, например проксирование двух серверов

需要在http节点上添加一个
upstream servlet_yujia{
    server 127.0.0.1:8080;
    server 127.0.0.1:8090;
}
修改location /下的反向代理 
	proxy_pass http://servlet_yujia

Измените, как показано:

Кроме того, вы можете добавить веса на сервер:

Это означает, что если есть 6 посещений, то есть 4 возможных посещения второго сервера. Запускайте nginx при каждом посещенииlocalhost/test/, возможен доступ к данным сервера по порту 8080, а также возможен доступ к данным сервера по порту 8090.

5. Проблема с совместным использованием сеанса

  1. Решение 1 (хорошо работает только под окнами):

    Решение веб-сервера (механизм вещания), примечание: низкая производительность под tomcat

    Измените два места:

    1. Измените server.xml двух котов, чтобы они поддерживали совместное использование, и установите<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>Закомментируйте

    2. Измените файл конфигурации проекта web.xml, чтобы добавить узел<distributable/>

  2. Решение 2. Вы можете поместить идентификатор сеанса в Redis

  3. Решение 3: Чтобы обеспечить постоянный доступ IP-адреса к веб-серверу, нет проблемы с общим доступом к сеансу.Добавьте ip_hash в восходящий поток в файле конфигурации nginx (Этот метод часто используется в Linux.)

    Команда ip_hash может определить местонахождение клиентского IP-запроса к тому же внутреннему серверу с помощью алгоритма хеширования.

4.2 Построение кластера под Linux

1. Сначала загрузите nginx в linux

2. Распаковать nginx

3. Сначала скомпилируйте nginx

安装依赖包
    yum install gcc-c++
    yum install -y pcre pcre-devel
    yum install -y zlib zlib-devel
    yum install -y openssl openssl-devel
执行编译
    先进入 nginx的目录
    执行
		./configure

4. Установите нгинкс

  • воплощать в жизньmake
  • воплощать в жизньmake install

5. Запускаем nginx:

cd nginx 目录下
	配置文件 conf
	启动nginx 
		./nginx 

Примечание. ① В каталоге nginx находится каталог sbin, а в каталоге sbin — исполняемая программа nginx.

②Закройте nginx:

  • Команда выключения: эквивалентно обнаружению процесса nginx kill./nginx -s stop
  • команда выхода./nginx -s quitРекомендуется использовать эту команду для закрытия после выполнения программы.

6. Освободите порт номер 80

/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
将该设置添加到防火墙的规则中
/etc/rc.d/init.d/iptables save

7. Измените файл conf как под окном: настроить кластер