Nginx
Todos os arquivos de instalação necessários para o documento foram empacotados,
link para download : https://pan.baidu.com/s/1yWUDj3lXK9nm-huyzSwu8g
Código de extração: u7dl
copie este conteúdo e abra o aplicativo Baidu Netdisk para celular, a operação é mais conveniente - Compartilhar do Baidu Netdisk Super Member V3
Artigo Diretório
- Nginx
-
- Um, introdução ao Nginx
- Dois, instalação do Nginx (Linux)
- Três, instruções comuns do Nginx
- Quatro, arquivo de configuração Nginx
- Cinco, exemplo de configuração Nginx (1)
- Seis, exemplo de configuração Nginx (2)
- Sete, balanceamento de carga de exemplo de configuração Nginx
- Oito, separação de exemplo de configuração Nginx de dinâmico e estático
- Nove, cluster de exemplo de alta disponibilidade de configuração Nginx
- Dez, análise do princípio Nginx
Um, introdução ao Nginx
O Nginx é um servidor proxy reverso e HTTP de alto desempenho. Ele ocupa uma pequena memória e tem uma capacidade muito poderosa de lidar com alta simultaneidade.
Nginx pode ser concluído, balanceamento de carga, separação dinâmica e estática
Alguns deles não podem ser enviados devido a violações. Recomenda-se assistir a este vídeo para completar os pontos de conhecimento que não são mencionados. Nginx no Vale do Silício explica o portal
1. Balanceamento de carga
Aumente o número de servidores e distribua as solicitações para cada servidor em vez de concentrar as solicitações em um único servidor
2. Separação de dinâmico e estático
Analisa recursos dinâmicos e recursos estáticos por diferentes servidores, reduzindo a pressão ao usar um único servidor
Dois, instalação do Nginx (Linux)
- Carregue os arquivos dependentes de pcre para o diretório / usr / src do Linux
-
Digite o diretório acima,
cd /usr/src
-
Descompacte o arquivo compactado pcre,
tar -zxvf pcre-8.37.tar.gz
-
Digite o diretório descompactado,
cd pcre-8.37/
-
Seguido pela implementação
./configure
,make && make install
para concluir a instalação -
Verifique se a instalação foi bem-sucedida,
pcre-config --version
- Instale dependências openssl, zlib e gcc
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
- Faça upload do pacote de instalação do Nginx para o diretório / usr / src do Linux
-
Digite o diretório acima,
cd /usr/src
-
Descompacte o arquivo de instalação do Nginx,
tar -zxvf nginx-1.12.2.tar.gz
-
Digite o diretório descompactado,
cd nginx-1.12.2/
-
Seguido pela implementação
./configure
,make && make install
para concluir a instalação -
Abra a porta 80:
(1) firewall-cmd --permanent --add-port=80/tcp
, mostrar que sucesso significa sucesso
(2) firewall-cmd --reload
Reinicie o firewall para ter efeito, e exibir sucesso significa sucesso
(3 ) firewall-cmd --query-port=80/tcp
, display sim significa que a porta 80 foi aberta com sucesso
- Inicie o Nginx
cd /usr/local/nginx/sbin
e execute./nginx
- Digite http: // [endereço IP do Linux]: 80 na barra de endereço do navegador (o Nginx usa a porta 80 por padrão)
Três, instruções comuns do Nginx
1. Inicie o Nginx
Primeiro cd / usr / local / nginx / sbin, depois ./nginx ou diretamente /usr/local/nginx/sbin/nginx
2. Feche o Nginx
Primeiro cd / usr / local / nginx / sbin, depois ./nginx -s pare ou diretamente /usr/local/nginx/sbin/nginx -s stop
3. Implantação ativa do Nginx
(Você também pode recarregar o arquivo de configuração modificado sem reiniciar o Nginx)
Primeiro cd / usr / local / nginx / sbin, depois ./nginx -s recarregar, ou diretamente /usr/local/nginx/sbin/nginx -s reload
Quatro, arquivo de configuração Nginx
Os arquivos de configuração do Nginx são colocados no diretório / usr / local / nginx / conf /
O conteúdo após abrir o arquivo nginx.conf:
# 第一部分:全局块
worker_processes 1; # worker进程数,值越大,支持的并发数量越大,尽量与cpu数相同
# 第二部分:events块
events {
worker_connections 1024; # 每个worker进程支持的最大连接数默认为1024
}
# 第三部分:http块
http {
# http全局块
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
# server块,一般都是对此部分进行配置 (可以有多个server块)
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
Cinco, exemplo de configuração Nginx (1)
1. Obtenha o efeito
Digite o endereço www.123.com no navegador para ir para a página inicial do servidor tomcat do sistema Linux
2. Análise de etapas
(1) Instale o tomcat no Linux, use a porta padrão 8080
(2) Análise do processo de acesso
(3) Defina a correspondência entre o nome de domínio e o endereço IP no arquivo host do Windows
(4) No arquivo de configuração Nginx,vim /usr/local/nginx/conf/nginx.conf
(5) Inicie o Nginx, abra o navegador para executar, o efeito é como mostrado na figura
Seis, exemplo de configuração Nginx (2)
1. Obtenha o efeito
Modifique a porta de escuta do Nginx para 9001 e vá para diferentes páginas do servidor de acordo com o endereço do navegador
Visite http: // [Linux ip address]: 9001 / edu / Jump to 127.0.0.1:8080
Visite http: // [Linux ip address]: 9001 / vod / Jump to 127.0.0.1:8081
2. Análise de etapas
(1) Crie dois servidores Tomcat, uma porta 8080 e uma porta 8081 (e abra essas duas portas)
(2) Crie pastas edu, vod e arquivos a.html nos diretórios webapps dos dois servidores Tomcat, respectivamente
(3) Configure no arquivo de configuração Nginx,vim /usr/local/nginx/conf/nginx.conf
(4) Abra o navegador para testar
3. Descrição da diretiva de localização no arquivo de configuração Nginx
(1) Introdução: usado para corresponder ao endereço solicitado
(2) Gramática
(3) Wildcard
=: Antes do uri sem expressões regulares, a string da solicitação deve corresponder estritamente ao uri. Se a correspondência for bem-sucedida, pare de
continuar a pesquisar e processe a solicitação imediatamente
~: Corresponde ao endereço de solicitação que contém uri, diferencia maiúsculas de minúsculas
~ *: corresponde ao endereço do pedido que contém uri, sem distinção entre maiúsculas e minúsculas
^ ~: Antes do uri sem expressões regulares, o servidor Nginx deve encontrar o local com o maior grau de correspondência entre o uri de identificação e a string de solicitação e, em seguida, usar esse local para processar a solicitação imediatamente, em vez de usar o uri regular e solicitação no bloco de localização correspondência de string
Sete, balanceamento de carga de exemplo de configuração Nginx
1. Obtenha o efeito
Digite http: // [endereço ip do Linux] /edu/a.html na barra de endereço do navegador e distribua esta solicitação para dois servidores Tomcat
2. Análise de etapas
(1) Crie dois servidores Tomcat, uma porta 8080 e uma porta 8081 (e abra essas duas portas)
(2) Crie a pasta edu e um arquivo.html no diretório webapps dos dois servidores Tomcat respectivamente
(3) Configuração de balanceamento de carga no arquivo de configuração Nginx,vim /usr/local/nginx/conf/nginx.conf
upstream myserver {
# 列出所要负载均衡的tomcat服务器
server 192.168.206.128:8080;
server 192.168.206.128:8081;
}
server {
listen 80;
server_name 192.168.206.128;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://myserver;
}
(4) Resultado da operação: Digite o endereço na barra de endereço, e cada atualização irá para outro servidor Tomcat
3. Estratégia de distribuição de balanceamento de carga
(1) Sondagem (padrão)
Atribua a diferentes servidores um por um de acordo com a seqüência de tempo da solicitação. Se um servidor cair, este servidor será removido automaticamente
(2) peso
peso representa o peso, o padrão é 1, quanto maior o peso, mais solicitações são alocadas, uso:
(3) ip_hash
Cada requisição é alocada de acordo com o hash do endereço IP acessado, ou seja, qual servidor é acessado por determinado endereço pela primeira vez, e então essa requisição sempre acessará este servidor, que pode resolver o problema da sessão.
(4) justo
A solicitação é alocada de acordo com o tempo de resposta do servidor, e o servidor com um tempo de resposta curto tem prioridade.
Oito, separação de exemplo de configuração Nginx de dinâmico e estático
1. Visão Geral
A separação dinâmica e estática do Nginx significa simplesmente separar solicitações dinâmicas e estáticas. Não pode ser entendida como simplesmente separar fisicamente páginas dinâmicas e estáticas. A rigor, as solicitações dinâmicas devem ser separadas das solicitações estáticas, que podem ser entendidas como o uso de Nginx para processar páginas estáticas e Tomcat para processar páginas dinâmicas. Da perspectiva da implementação atual, ele pode ser dividido em dois tipos. Um é separar puramente os arquivos estáticos em um nome de domínio separado e colocá-los em um servidor separado, que também é a solução principal atual; o outro método é dinâmico e arquivos estáticos. Misturados e liberados, separados por Nginx
2. Alcance o efeito
Crie uma pasta / data / www / no diretório raiz do Linux, que armazena o recurso estático a.html, e crie uma pasta / data / www / sob os aplicativos da web do servidor Tomcat em 8080, que armazena o recurso estático a. html, quando a solicitação para este recurso estático é inserida, o recurso estático no diretório raiz é acessado, não o recurso estático no servidor Tomcat
3. Análise de etapas
(1) Crie as pastas e arquivos acima
(2) Executar configuração de separação dinâmica e estática no arquivo de configuração Nginx,vim /usr/local/nginx/conf/nginx.conf
server {
listen 80;
server_name 192.168.206.128;
#charset koi8-r;
#access_log logs/host.access.log main;
location /www/ {
root /data/;
index index.html index.htm;
}
}
Nove, cluster de exemplo de alta disponibilidade de configuração Nginx
1. Visão Geral
Quando o servidor principal Nginx fica inativo, o servidor em espera é usado para garantir a alta disponibilidade do serviço. A ideia é a seguinte:
2. Análise de etapas
(1) Dois servidores Nginx (ou seja, duas máquinas virtuais Linux) são necessários, os endereços são 192.168.17.129 e 192.168.17.131, respectivamente
(2) Instale o Nginx em duas máquinas virtuais
(3) Instale o keepalived no servidor principal
i. Digite o diretório usr,cd /usr/
ii. Ambiente de instalação
1. wget http://www.percona.com/redir/downloads/Percona-XtraDB-Cluster/5.5.37-25.10/RPM/rhel6/x86_64/Percona-XtraDB-Cluster-shared-55-5.5.37-25.10.756.el6.x86_64.rpm
2. rpm -ivh Percona-XtraDB-Cluster-shared-55-5.5.37-25.10.756.el6.x86_64.rpm
iii. Use o comando yum para instalar,yum install keepalived -y
iv. Após a instalação, crie um diretório keepalived em / etc, que contém o arquivo de configuração keepalived.conf
(4) Exclua o arquivo de configuração original,rm -rf /etc/keepalived/keepalived.conf
(5) Substitua pelo novo arquivo de configuração keepalived.conf, o conteúdo é o seguinte:
global_defs {
notification_email {
[email protected]
[email protected]
[email protected]
}
notification_email_from [email protected]
#邮件服务器通知地址(暂不配置,默认即可,默认是当前虚拟机的ip地址)
smtp_server 192.168.17.129
#邮件服务器超时时间(暂不配置,默认即可)
smtp_connect_timeout 30
#当前虚拟机的IP地址
router_id 192.168.17.129
}
vrrp_script Monitor_Nginx {
script "/etc/keepalived/nginx_check.sh" #检测脚本执行的路径
interval 2 #检测脚本执行的间隔
weight 2 #检测脚本执行的权重
}
vrrp_instance VI_1 {
state MASTER # 标识这个机器是MASTER(主服务器)还是BACKUP(备服务器)
interface ens33 # 当前机器的网卡名称
virtual_router_id 51 # 虚拟路由的编号,主备必须一致
priority 100 # 主、备机取不同的优先级,主机值较大,备份机值较小
advert_int 1 # VRRP Multicast广播周期秒数,即每隔一秒检测是否宕机
authentication {
auth_type PASS #(VRRP认证方式)
auth_pass 1111 #(密码)
}
track_script {
Monitor_Nginx # 调用nginx进程检测脚本
}
virtual_ipaddress {
192.168.17.50 # 给两台Nginx服务器绑定的虚拟ip地址
}
}
(6) Adicionado script de detecção de keepalived,vim /etc/keepalived/nginx_check.sh
#!/bin/bash
if [ "$(ps -ef | grep "nginx: master process" | grep -v grep )" == "" ]
then
killall keepalived
fi
(7) Inicie o serviço keepalived,service keepalived start
(8) Instale o servidor de espera Nginx e mantenha-o vivo em outro sistema Linux, as etapas são conforme descrito acima, mas a parte vermelha do conteúdo acima precisa ser modificada no arquivo de configuração de keepalived
3. Resultados da operação
O navegador insere o endereço ip virtual 192.168.17.50 para acessar o servidor principal, finaliza o processo Nginx do servidor principal, e este endereço ip virtual acessará o servidor em espera
Dez, análise do princípio Nginx
Olhando para o processo Nginx, você encontrará dois processos, trabalhador e mestre.
O modelo de rosca de trabalho é mostrado na figura:
O princípio de funcionamento é mostrado na figura:
Os benefícios de usar um mestre e vários trabalhadores:
-
Propício para implantação dinâmica: o trabalhador que pega a solicitação executará a tarefa e o restante dos trabalhadores ociosos atualizarão o arquivo de configuração, e as informações do arquivo de configuração serão atualizadas automaticamente quando a tarefa do trabalhador for concluída.
-
Cada trabalhador é um processo independente, se um dos trabalhadores tiver um problema, isso não afetará os outros trabalhadores
Três problemas comuns:
- Quantos trabalhadores são adequados?
Resposta: O número de workers é igual ao número de CPUs do servidor, é melhor modificá-lo no bloco global do arquivo de configuração Nginx.
- Quantas conexões de um trabalhador serão ocupadas por uma solicitação?
Resposta:
(1) Se for apenas um recurso estático, ocupará 2 conexões (recebendo e retornando duas conexões)
(2) Se o Nginx for usado como um servidor proxy para usar o Tomcat para processar recursos dinâmicos, ele levará até 4 conexões
- Como calcular o número máximo simultâneo de Nginx?
Resposta:
(1) Se for apenas um recurso estático, o número máximo simultâneo = o número de trabalhadores * o número máximo de conexões por trabalhador / 2
(2) Se o Nginx for usado como um servidor proxy para usar o Tomcat para processar recursos dinâmicos, o
número máximo simultâneo = o número de trabalhadores * o número máximo de conexões por trabalhador / 4