Entenda e implemente o proxy reverso Nginx em minutos!
Prefácio: Os pontos de conhecimento envolvidos neste artigo são: comandos básicos do CentOS7, operações comuns do docker, volumes de dados de contêiner, vinculação de porta e vinculação de nome de domínio, proxy reverso, se você usar um sistema operacional diferente e métodos diferentes dos deste artigo Relacionamentos, você pode consulte o catálogo de artigos para entender quais etapas um proxy reverso geralmente requer.
1. Conceito
Antes de implementar um proxy reverso , devemos primeiro saber o que é um proxy direto e compreender sua função por meio das diferenças entre eles
1.1 Proxy de encaminhamento
como mostra a imagem:
Não é difícil ver que no exemplo acima, o PC na LAN envia a solicitação para o servidor proxy, e então o servidor proxy encaminha a solicitação para a Internet
1.2, proxy reverso
Não é difícil ver que no exemplo acima, a solicitação da Internet irá primeiro passar pelo servidor proxy e, em seguida, determinar qual site retornar de acordo com o servidor proxy
1.3. Comparação dos dois
Tipos de | A diferença |
---|---|
Proxy de encaminhamento | Cliente proxy , solicitações de encaminhamento unificado |
Proxy reverso | Servidor proxy , distribuir solicitações uniformemente |
2. Servidor proxy Nginx
2.1, instale o espelho Nginx
1. Pesquisar espelho nginx
docker search nginx
2. Extraia a imagem nginx (novamente, você precisa configurar a fonte para melhorar a velocidade do docker de download da imagem, Baidu para detalhes)
docker pull nginx
2.2, prepare a configuração relacionada ao Nginx
1. Crie um diretório nginx no diretório / root para armazenar informações de dados nginx
mkdir ~/nginx
2. Entre no catálogo
cd ~/nginx
3. Crie um diretório conf.d sob o diretório nginx (usado para armazenar arquivos de configuração relacionados ao proxy reverso)
mkdir conf.d
4. Crie o arquivo de configuração nginx.conf no diretório conf (escolha um dos dois métodos)
vi nginx.conf
ou
vim nginx.conf
5. Adicione o seguinte conteúdo de configuração
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
7. Crie um diretório conf no diretório nginx (armazene as informações de configuração do nginx)
mkdir conf
8. Crie o arquivo de configuração proxy.conf no diretório conf.d (configuração relacionada ao proxy reverso)
upstream tomcat-test {
server 192.168.181.5:8080;
}
server {
listen 80; #port
server_name www.proxy.com; #host
location / {
proxy_pass http://tomcat-test;
index index.html;
}
}
Explicação do arquivo de configuração (o ip precisa ser alterado de acordo com o ip da sua máquina virtual):
2.3, crie um contêiner
1. Crie um contêiner e defina o mapeamento de porta e diretório (no diretório nginx)
docker run -id --name=c_nginx \
-p 80:80 \
-p 81:81 \
-p 82:82 \
-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf \
-v $PWD/conf.d:/etc/nginx/conf.d \
-v $PWD/logs:/var/log/nginx \
-v $PWD/html:/usr/share/nginx/html \
nginx
Explique um pouco o arquivo de configuração acima:
-p
A função do comando é ligar a porta da máquina virtual à porta do contêiner
-v
A função do comando é fazer com que a máquina virtual e o contêiner compartilhem o mesmo diretório, $PWD
indicando o diretório atual. O diretório compartilhado está na máquina virtual, não no contêiner (você pode aprender sobre volumes de dados)
3. Servidor de teste Tomcat
3.1, instale o espelho
1. Pesquisar espelho tomcat
docker search tomcat
2. Puxe a imagem do Tomcat
docker pull tomcat
3.2, crie o contêiner e diretório do tomcat
1. Crie um diretório tomcat no diretório / root (usado para armazenar arquivos html)
mkdir ~/tomcat
cd ~/tomcat
2. Crie e edite o arquivo index.html (página html para exibição posterior)
vi index.html
Insira o conteúdo do teste
this is index.html port=8080!!!!
3. Criar contêiner, definir porta, mapeamento de diretório
docker run -id --name=c_tomcat \
-p 8080:8080 \
-v $PWD:/usr/local/tomcat/webapps \
tomcat
4. O host executa a configuração relevante de mapeamento de nome de domínio
Como mostrado abaixo:
Agora queremos é através do www.proxy.com
acesso nginx servidor proxy nome de domínio, endereço ip do servidor proxy é 192.168.181.5
, para que o navegador possa identificar este domínio, precisamos definir o arquivo de configuração do computador
Este artigo usa o sistema operacional Windows como exemplo, outros sistemas operacionais precisam ser Baidu
O sistema Windows de arquivo de mapeamento de nome de domínio está C:\Windows\System32\drivers\etc
no hosts
arquivo de diretório
Adicione as seguintes informações ao arquivo:
192.168.181.5 www.proxy.com
O arquivo hosts é equivalente a um servidor DNS, que www.proxy.com
resolve o que você envia para 192.168.181.5
este endereço IP
5. Resultados do teste
Reinicie o tomcat e o nginx
docker restart c_nginx
docker restart c_tomcat
Depois de visitar www.proxy.com, você pode ver os seguintes efeitos. Não
é fácil de criar. Se você ganhou algo, por favor, curta e incentive. Se você tiver alguma dúvida, indique, progridam juntos e aprendam juntos ~ ^ _ ^