8 pontos de conhecimento levam você a dominar o Nginx facilmente, você nem mesmo consegue coletar quando começa a fascinante!

Prefácio

Como existem muitos ambientes de desenvolvimento, ambientes de desenvolvimento, ambientes de teste, ambientes de pré-produção, etc., o nginx é frequentemente usado para configurar agentes. Mas eu simplesmente sei como usá-lo e quero classificar o conhecimento do nginx com cuidado.

1. O que é Nginx

Nginx (engine x) é um servidor da Web de proxy reverso e HTTP de alto desempenho.

O Nginx é escrito de maneira orientada a eventos, por isso tem um desempenho muito bom e também é um proxy reverso e servidor de balanceamento de carga muito eficiente. Em termos de desempenho, o Nginx ocupa muito poucos recursos do sistema, pode suportar mais conexões simultâneas e alcançar maior eficiência de acesso; em termos de função, Nginx é um excelente servidor proxy e servidor de balanceamento de carga; em termos de instalação e configuração, Nginx é fácil para instalar, configuração flexível.

O Nginx oferece suporte à implantação a quente, a velocidade de inicialização é extremamente rápida e a versão ou configuração do software pode ser atualizada sem interrupção do serviço, mesmo que seja executado por vários meses sem reiniciar.

No sistema de microsserviços, o Nginx está sendo usado como gateway por cada vez mais projetos, cooperando com Lua para limitação de corrente e controle de fusíveis.

Um proxy reverso é mencionado aqui, o que é um proxy reverso?

O Nginx encaminha a solicitação para máquinas e portas diferentes (ou retorna o resultado diretamente) de acordo com a porta, nome de domínio e url da solicitação recebida e, em seguida, retorna os dados retornados ao cliente.

No padrão de design Java, o modo proxy é definido da seguinte maneira: um objeto proxy é fornecido a um objeto e o objeto proxy controla a referência do objeto original.

Proxy reverso: cliente um> proxy <um> servidor

Um exemplo de agência reversa para alugar uma casa:

A (cliente) quer alugar uma casa e B (agente) aluga a casa para ele.
Neste momento, C (servidor) é realmente o proprietário.
B (agente) é o intermediário que aluga esta casa para A (cliente).

Durante este processo, A (cliente) não sabe quem é o senhorio
desta casa e pode pensar que esta casa é B (agente).

Recursos do proxy reverso

  • Nginx não tem endereço próprio, seu endereço é o endereço do servidor, como www.baidu.com, para fora é o produtor dos dados.
  • Ngxin sabe claramente a qual servidor ir para obter os dados (antes de receber a solicitação, ele determinou a qual servidor se conectar)

Se houver um reverso, deve haver um positivo.

O chamado proxy de encaminhamento é o proxy que segue a direção da solicitação, ou seja, o servidor proxy é configurado por você para atendê-lo e solicitar o endereço do servidor de destino. A maior característica do proxy de encaminhamento é que o cliente é muito claro sobre o endereço do servidor a ser acessado; o servidor só sabe de qual servidor proxy a solicitação vem, mas não de qual cliente específico vem; o modo de proxy de encaminhamento protege ou oculta o informação real do cliente

Proxy de encaminhamento: cliente <um> agente um> servidor

O agente de frete também simplesmente dá um exemplo de aluguel de uma casa:

A (cliente) quer alugar a casa de C (servidor), mas A (cliente) não sabe que C (servidor) não pode alugá-la.
B (agente) sabe que C (servidor) pode alugar esta casa, então você pede a B (agente) para ajudar a alugar esta casa.

Neste processo, C (servidor) não conhece A (cliente) e só conhece B (agente)
C (servidor) não sabe que A (cliente) aluga uma casa, só sabe que a casa está alugada para B (agente) .

2. Cenários de aplicativos Nginx

1. servidor http . Nginx é um serviço http que pode fornecer serviços http de forma independente. Pode ser um servidor da web estático.

2. Hospedagem virtual. Vários sites podem ser virtualizados em um servidor. Por exemplo, hosts virtuais usados ​​por sites pessoais.

  • Com base em portas, portas diferentes
  • Com base no nome de domínio, diferentes nomes de domínio

3. Proxy reverso, balanceamento de carga . Quando o número de visitas ao site atinge um determinado nível, quando um único servidor não pode atender à solicitação do usuário, um cluster de vários servidores é necessário para usar o nginx como um proxy reverso. E vários servidores podem compartilhar a carga igualmente, e nenhum servidor ficará ocioso devido à alta carga de um servidor.

3. Instale o Nginx

blog.s135.com/nginx_php_v…

4. Comando

Dumping: Os dados em dispositivos como memória, CPU, I / O, etc. são dinâmicos (ou voláteis), o que significa que os dados serão perdidos quando forem usados ​​ou se ocorrer uma exceção. Se eu quiser obter os dados em determinados momentos (pode ser depurar bugs do programa ou coletar algumas informações), tenho que despejá-los na forma de estática (como arquivos). Caso contrário, você nunca obterá esses dados.

5. Configuração Nginx

O principal arquivo de configuração do Nginx é: nginx.conf.

A configuração interna é principalmente assim:

Podemos dividir claramente o arquivo de configuração nginx.conf em três partes:

Bloco global:  Do início do arquivo de configuração ao bloco de eventos, algumas instruções de configuração que afetam a operação geral do servidor nginx serão definidas, principalmente incluindo a configuração do usuário (grupo) que executa o servidor Nginx, o número de processos de trabalho podem ser gerados e o armazenamento do caminho PID do processo, caminho e tipo de armazenamento de log e introdução de arquivos de configuração, etc.

Por exemplo, a configuração na primeira linha acima:

Esta é a configuração principal do serviço de processamento simultâneo do servidor Nginx. Quanto maior o valor de worker_processes, mais processamento simultâneo pode ser suportado, mas será restrito por hardware, software e outros equipamentos.

** bloco de eventos: ** as instruções envolvidas afetam principalmente a conexão de rede entre o servidor Nginx e o usuário. As configurações comuns incluem se deve permitir a serialização de conexões de rede em vários processos de trabalho, se deve permitir que várias conexões de rede sejam recebidas ao mesmo tempo, e qual escolher o modelo orientado a eventos para processar solicitações de conexão, o número máximo de conexões que cada processo de palavra pode suportar ao mesmo tempo, etc.

bloco http: A parte mais frequente da configuração do servidor Nginx, a maioria das funções como proxy, cache e definição de log e a configuração de módulos de terceiros estão aqui.

6. Proxy reverso

O proxy reverso foi explicado acima, vamos escrever um agora. Quando eu configurar o proxy reverso na empresa, adicionarei um servidor ao http:

Em seguida, configure nos hosts:

A seguir, resolvemos a gramática:

A instrução server_name é usada principalmente para configurar hosts virtuais baseados em nomes

A função do gzip é habilitar a transmissão compactada

A diretiva de localização é usada para corresponder ao URL

A diretiva proxy_pass é usada para definir o endereço do servidor proxy

proxy_set_header é usado para definir as informações do cabeçalho (cabeçalho da solicitação) recebidas pelo servidor proxy

Basicamente, podemos configurar o proxy reverso se entendermos server_name, location, proxy_pass

7. Host virtual de gerenciamento Nginx

Não toquei nessa parte do meu trabalho, mas quando busquei informações, o nome parecia muito grande, então pesquisei deliberadamente. Quando queremos virtualizar vários sites em um servidor, podemos usar hosts virtuais para isso.

O host virtual usa tecnologia especial de software e hardware. Ele divide um host de servidor executado na Internet em um host "virtual". Cada host virtual pode ser um site independente e pode ter um nome de domínio independente. Com funções completas de servidor de Internet (WWW, FTP, e-mail, etc.), hosts virtuais no mesmo host são completamente independentes. Do ponto de vista dos visitantes do site, cada host virtual é exatamente o mesmo que um host independente.

7.1 Hospedagem virtual baseada no nome de domínio

1. Adicione o seguinte segmento de código nas chaves http:

server {  
        #监听端口 80  
        listen 80;   
                                
        #监听域名feng.com;  
        server_name feng.com;
          
        location / {              
                # 相对路径,相对nginx根目录。也可写成绝对路径  
            root    feng;  
            
            # 默认跳转到index.html页面  
            index index.html;                 
        }  
    }
复制代码

2. Alterne o diretório de instalação: cd / usr / local / software / nginx

3. Crie um diretório: mkdir feng

4. Crie um novo arquivo index.html: vi /usr/local/software/nginx/feng/index.html, o conteúdo do arquivo:

<html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        </head>
        <body>
            <h2>枫</h2>
        </body>
    </html>
复制代码

5. Releia o arquivo de configuração:

/ usr / local / software / nginx / sbin / nginx-s reload

kill -HUP número do processo

6. Configure o host nativo do Windows:

192.168.197.142 feng.com # Endereço IP do servidor Linux

7. Visite: http://feng.com:80/

7.2 Configuração de host virtual baseada em porta

server {
        listen  2022;
        server_name     feng.com;
        location / {
           root    /home;
           index index.html;
        }
    }
复制代码

7.3 Configuração de host virtual com base no endereço IP

    server {
      listen  80;
      server_name  192.168.197.142;
      location / {
              root    ip;
              index index.html;
      }
    }

8. Balanceamento de carga

O que mais ouvimos sobre o uso do Nginx é o balanceamento de carga, então, o que é balanceamento de carga?

** Balanceamento de carga: ** À medida que as partes centrais atuais da rede existente aumentam com o aumento do volume de negócios, o rápido crescimento do acesso e do tráfego de dados, sua capacidade de processamento e força de computação também aumentaram correspondentemente, tornando um único dispositivo de servidor fundamentalmente Não posso pagar.

Um método barato, eficaz e transparente derivado dessa situação para expandir a largura de banda de servidores e equipamentos de rede existentes, aumentar a taxa de transferência, fortalecer os recursos de processamento de dados da rede e melhorar a flexibilidade e disponibilidade da rede é uma tecnologia chamada Load Balance (Load Balance).

Existem vários esquemas para o Nginx atingir o balanceamento de carga.

8.1 Votação

Round Robin é Round Robin, que distribui as solicitações da Web do cliente para diferentes servidores back-end, por sua vez, de acordo com a ordem no arquivo de configuração Nginx.

upstream backserver {
    server 192.168.0.14;
    server 192.168.0.15;
}
复制代码

8,2 peso

O balanceamento de carga baseado em peso é o balanceamento de carga ponderada. Dessa forma, podemos configurar o Nginx para distribuir mais solicitações para servidores de back-end de alta configuração e relativamente poucas solicitações para servidores de baixa configuração.

upstream backserver {
    server 192.168.0.14 weight=3;
    server 192.168.0.15 weight=7;
}
复制代码

Quanto maior o peso, maior a probabilidade de serem visitados, pois no exemplo acima, são 30% e 70% respectivamente.

8,3 ip_hash

Nos dois esquemas de balanceamento de carga mencionados anteriormente, as solicitações web consecutivas do mesmo cliente podem ser distribuídas para diferentes servidores back-end para processamento, portanto, se houver uma sessão envolvida, a sessão será mais complicada. Comum é a persistência de sessões baseadas em banco de dados. Para superar os problemas acima, você pode usar um esquema de balanceamento de carga baseado em hashing de endereço IP. Nesse caso, solicitações da web consecutivas do mesmo cliente serão distribuídas para o mesmo servidor para processamento.

upstream backserver {
    ip_hash;
    server 192.168.0.14:88;
    server 192.168.0.15:80;
}
复制代码

8.4 justo

A solicitação é alocada de acordo com o tempo de resposta do servidor backend e o tempo de resposta curto é o preferido.

upstream backserver {
    server server1;
    server server2;
    fair;
}
复制代码

8,5 url_hash

Distribua as solicitações de acordo com o resultado do hash da URL visitada, de forma que cada URL seja direcionada ao mesmo servidor back-end (correspondente), o que é mais eficaz quando o servidor back-end é armazenado em cache.

upstream backserver {
    server squid1:3128;
    server squid2:3128;
    hash $request_uri;
    hash_method crc32;
}
复制代码

Aumento de servidores que precisam usar balanceamento de carga

proxy_pass http://backserver/; 
upstream backserver{ 
    ip_hash; 
    server 127.0.0.1:9090 down; (down 表示单前的server暂时不参与负载) 
    server 127.0.0.1:8080 weight=2; (weight 默认为1.weight越大,负载的权重就越大) 
    server 127.0.0.1:6060; 
    server 127.0.0.1:7070 backup; (其它所有的非backup机器down或者忙的时候,请求backup机器) 
} 
复制代码

max_fails: O número padrão de falhas de solicitação permitidas é 1. Quando o número máximo de vezes é excedido, o erro definido pelo módulo proxy_next_upstream é retornado.

fail_timeout: o tempo de pausa após as falhas de max_fails.

Exemplo de configuração:

#user  nobody;

worker_processes  4;
events {
# 最大并发数
worker_connections  1024;
}
http{
    # 待选服务器列表
    upstream myproject{
        # ip_hash指令,将同一用户引入同一服务器。
        ip_hash;
        server 125.219.42.4 fail_timeout=60s;
        server 172.31.2.183;
    }

    server{
        # 监听端口
        listen 80;
        # 根目录下
        location / {
        # 选择哪个服务器列表
            proxy_pass http://myproject;
        }

    }
}
复制代码

8.6 Prática aprofundada

Todos os esquemas acima são de balanceamento de carga. Para a implementação específica, vi que Zhihu escreveu muito bem e ficou bonito para decolar.

9. Resumo

O Nginx é realmente poderoso e cada vez mais usado. Embora não o use muito na empresa, aprendi muito sobre o Nginx e tenho mais ideias para a construção e otimização de projetos. Talvez não precise ser um entendimento profundo, apenas para atender às nossas necessidades diárias, entendê-lo, quando estamos trabalhando em um projeto ou resolvendo um problema, pode ser usado como uma solução para nós, é muito legal.

Resumindo

O editor também compilou mais de 270 páginas de informações sobre o combate real da arquitetura de microsserviço Spring Cloud e Docker, mais de 100 páginas de notas de estudo do Spring Boot, Spring Family Bucket (1187 páginas PDF) e 1.000 perguntas de entrevista para engenheiros Java dos principais Empresas de Internet., Siga a conta oficial: bug de mudança Kylin.

Acho que você gosta

Origin blog.csdn.net/QLCZ0809/article/details/112281343
Recomendado
Clasificación