Diretório de artigos da série
[Nginx 1]——Introdução ao Nginx (proxy direto, proxy reverso, balanceamento de carga, separação dinâmica e estática)
[Nginx 2]——Arquivo de configuração de comando comum do Nginx,
como o Nginx processa solicitações
[Nginx três] - proxy reverso
prefácio
Este blog apresenta principalmente como o Nginx implementa o proxy reverso, o que é proxy reverso e exemplos para implementar o proxy reverso.
1. O que é um proxy reverso?
O servidor proxy recebe a requisição na rede, encaminha a requisição para o servidor da rede interna, e retorna o resultado obtido do servidor para o cliente conectado na rede.
Antecedentes: Primeiro, há um usuário C, três servidores S1, S2 e S3, mas S1 está aberto para a rede externa, S2 e S3 não estão abertos para a rede externa e há um recurso D, que é colocado no servidores S2 e S3.
O usuário C não sabe que o recurso D está nos servidores S2 e S3, ele só sabe que pode obter o recurso D visitando o servidor S1, então ele acessa diretamente o servidor S1 todas as vezes, mas os recursos fornecidos ao usuário C são todos do servidor S2 ou S3.
Para o usuário C, o proxy reverso não sabe onde está o recurso D ou quem o fornece.
Para o servidor S1, ele aceita a solicitação do usuário todas as vezes e, em seguida, envia a solicitação para o servidor S2 ou S3 que fornece o recurso D de acordo com a política de agendamento. Para os servidores S2 e S3, eles também não sabem a verdade de acessando o recurso D. Seja qual for o usuário, basta interagir com o servidor S1.
Dois, Nginx implementa proxy reverso
Diagrama esquemático da implementação de um proxy reverso:
1. Preparação e acesso ao ambiente Tomcat
Instale o tomcat no servidor Linux e inicie-o. O ip da máquina virtual linux é 192.168.60.123
para acessar o servidor tomcat através do ip+port número 8080; a página acessada com sucesso:
2. Acesse o Tomcat através do nome de domínio
A relação de mapeamento entre nome de domínio e ip é realizada no arquivo hosts em windows. C:\WINDOWS\system32\drivers\etc
A função da configuração do arquivo host no Windows 10 é estabelecer um "banco de dados" de associação entre alguns nomes de domínio de sites comumente usados e seus endereços IP correspondentes. A principal função deste arquivo é definir a relação de mapeamento entre endereços IP e nomes de host, e é uma regra para mapear endereços IP e nomes de host³. Quando inserimos uma URL no navegador, o navegador primeiro pesquisará o arquivo de hosts locais. Se o endereço IP correspondente for encontrado, ele acessará diretamente o servidor correspondente ao endereço IP, caso contrário, enviará uma solicitação ao servidor DNS para obter o URL correspondente ao endereço IP.
Exemplo (como mostrado na figura:)
O ip da maquina virtual linux é 192.168.60.123
Desta vez, acesse através do nome de domínio www.test.com + número da porta 8080.
Perceba a captura de tela do efeito:
3. Acesso através do nome de domínio sem número de porta (realizar proxy reverso)
Modifique o arquivo de configuração do Nginx, edite o arquivo nginx.conf e modifique o módulo do servidor.
Primeiro, o nginx ouvirá as solicitações na porta 80 e, em seguida, corresponderá às solicitações com um nome de serviço de 192.168.60.123 e, em seguida, fará a correspondência de acordo com as regras de correspondência de localização. Para passar a solicitação para o servidor proxy HTTP, use a diretiva proxy_pass para ler este blog para saber mais sobre como o Nginx lida com solicitações
O código é o seguinte (exemplo):
server {
listen 80;
server_name 192.168.60.123;
location / {
proxy_pass http://192.168.60.123:8080;
}
}
Após a configuração, acesse através do nome de domínio www.test.com
Perceba a captura de tela do efeito:
Resumir
Não é difícil ver que o proxy reverso não conhece o servidor de destino do cliente, e o cliente sabe apenas que o servidor proxy solicitante pode obter os recursos necessários. O servidor proxy pode ser configurado de acordo para interceptar solicitações de clientes para nossos servidores de back-end e, ao fazer isso, o servidor proxy pode proteger a identidade do servidor de destino e servir como uma defesa adicional contra ataques de segurança.