introduzir
Esta é a jornada do caminho de crescimento do editor e também o caminho de aprendizado do editor. Espero crescer com vocês!
Aqui estão duas das minhas citações favoritas:
Para ter a vida mais simples e o sonho mais distante, mesmo que faça frio amanhã, as montanhas serão altas e a água estará longe, e a estrada estará longe.
Por que alguém deveria trabalhar duro? A melhor resposta que já vi é: porque as coisas que gosto são caras, os lugares que quero ir são longe e a pessoa que amo é perfeita. Portanto, o editor gostaria de dizer: encorajem-se uns aos outros!
Este artigo é um pequeno editor para registrar o aprendizado sistemático do Linux
Índice
1. O que é um proxy de encaminhamento
2. O papel do agente de encaminhamento
1. O arquivo de configuração contém seis partes:
2. Explique resumidamente o significado do código de cada módulo:
5. Etapas da operação do proxy reverso
Passo 1: Modifique o arquivo de configuração
Etapa 2: altere a posição da caixa vermelha na imagem acima para o endereço a ser proxy
Etapa 3: deixe o arquivo de configuração entrar em vigor
Etapa 4: endereço IP mais acesso ao número da porta (ip+porta)
1. O que é um servidor proxy
Um servidor proxy (Proxy Server), também conhecido como proxy ou proxy, é um servidor que atua como um servidor intermediário entre o cliente e o servidor upstream e é usado para encaminhar as solicitações do cliente.
O papel do servidor proxy é desempenhar o papel de intermediário, ocultar o endereço IP real do cliente e, ao mesmo tempo, atuar como proxy para a solicitação do cliente, para que o cliente possa acessar recursos na Internet por meio do servidor proxy, melhorando a segurança, confiabilidade e velocidade de acesso.
Servidor proxy, quando o cliente envia uma solicitação, ele não a envia diretamente para o host de destino, mas primeiro a envia para o servidor proxy. Depois que o serviço proxy aceita a solicitação do cliente, ele a envia para o host e recebe o dados retornados pelo host de destino e armazenados no servidor proxy. O disco rígido do servidor e, em seguida, enviados para o cliente.
2. Encaminhar procuração
1. O que é um proxy de encaminhamento
Proxy de encaminhamento (Forward Proxy) significa que o servidor proxy atua como um proxy para a solicitação do cliente, para que o cliente não possa acessar diretamente os recursos necessários. Resumindo, um proxy de encaminhamento é um servidor intermediário que acessa em nome do cliente, que pode controlar o comportamento de acesso do cliente e ocultar o endereço IP real e a identidade do cliente.
O proxy de encaminhamento é como uma máquina de trampolim e o proxy acessa recursos externos. Por exemplo, quando visitamos o Google na China, não podemos acessá-lo diretamente. Podemos enviar uma solicitação ao servidor proxy por meio de um servidor proxy de encaminhamento e o servidor proxy pode acessar o Google. Dessa forma, o proxy vai para o Google para obter os dados retornados e devolvê-los para nós. para acessar o Google
2. O papel do agente de encaminhamento
(1) Acessar recursos que antes eram inacessíveis, como o google (over the wall)
(2) Pode ser armazenado em cache para acelerar o acesso aos recursos
(3) Autorizar o acesso do cliente e autenticar online
(4) O agente pode registrar os registros de acesso do usuário (gerenciamento de comportamento online) e ocultar as informações do usuário do mundo externo
3. Proxy reverso
1. O que é um proxy reverso
Proxy Reverso (Reverse Proxy) significa que o servidor proxy atua como um proxy para a solicitação e resposta do servidor, de forma que o servidor não pode ser acessado diretamente pelo cliente. Resumindo, um proxy reverso é um servidor intermediário que acessa em nome do servidor, que pode controlar o comportamento de acesso do servidor e ocultar o endereço IP real e a identidade do servidor.
O modo de operação real do proxy reverso (Reverse Proxy) é usar o servidor proxy para aceitar a solicitação de conexão na Internet, encaminhar a solicitação ao servidor da rede interna e retornar o resultado obtido do servidor ao cliente solicitante a conexão na Internet Neste momento, o servidor proxy atua como um servidor externo.
O cliente pode acessar sem nenhuma configuração, basta enviar a requisição para o servidor proxy reverso, e o servidor proxy reverso irá selecionar o servidor alvo , obter os dados e retorná-los ao cliente. Existe apenas um servidor externo e o endereço do servidor proxy reverso é exposto, o que oculta o endereço IP real do servidor . O objeto proxy é o servidor e não sabe quem é o cliente.
2. O papel do proxy reverso
(1) Prevenir ataques: garantir a segurança da intranet e evitar ataques na Web. Para grandes sites, o proxy reverso é geralmente usado como endereço de acesso à rede pública e o servidor da Web é a intranet
(2) Balanceamento de carga: as solicitações do cliente podem ser distribuídas para vários servidores, equilibrando assim a carga do servidor e melhorando a disponibilidade e o desempenho do sistema (otimize a carga do site por meio do servidor proxy reverso para melhorar a disponibilidade e o desempenho do o site)
(3) Controle de acesso: o acesso aos recursos pode ser controlado de acordo com a identidade e autoridade do visitante para evitar que os recursos sejam acessados por usuários não autorizados
(4) Cache de conteúdo: pode armazenar em cache o conteúdo de resposta do servidor, acelerar a velocidade de acesso do cliente e reduzir a pressão de carga no servidor
Perceber:
Um proxy reverso só pode fazer solicitações e respostas do servidor proxy, não solicitações do cliente. O oposto do proxy reverso é o proxy de encaminhamento (Forward Proxy) O proxy de encaminhamento é um servidor proxy que atua como um proxy para a solicitação do cliente, controlando assim o comportamento de acesso do cliente e ocultando o endereço IP real do cliente.
Resumo de uma frase:
O forward proxy é o proxy do cliente, o proxy client, o servidor não conhece o cliente que realmente inicia a solicitação, o
reverse proxy é o servidor proxy, o proxy server, o cliente não conhece o servidor que realmente fornece o serviço
Quatro, configuração do Nginx
O Nginx é um servidor web muito poderoso , além de um servidor proxy reverso, mas também um servidor de e-mail, etc.
No uso do projeto, as três funções principais mais usadas são proxy reverso, balanceamento de carga e servidor estático
O uso dessas três funções diferentes está intimamente relacionado à configuração do nginx. As informações de configuração do servidor nginx estão concentradas principalmente no arquivo de configuração nginx.conf e todas as opções configuráveis são divididas aproximadamente nas seguintes partes
1. O arquivo de configuração contém seis partes:
main # 全局配置
events { # nginx工作模式配置
}
http { # http设置
....
server { # 服务器主机配置
....
location { # 路由配置
....
}
location path {
....
}
location otherpath {
....
}
}
server {
....
location {
....
}
}
upstream name { # 负载均衡配置
....
}
}
Conforme mostrado no arquivo de configuração acima, ele consiste principalmente em 6 partes:
- main: usado para configurar as informações globais do nginx
- eventos: configuração para o modo de trabalho nginx
- http: para alguma configuração de informações do protocolo http
- servidor: usado para configurar as informações de acesso ao servidor
- local: usado para configurar o roteamento de acesso
- upstream: configuração para balanceamento de carga
2. Explique resumidamente o significado do código de cada módulo:
1) módulo principal
Observe o código de configuração abaixo
# user nobody nobody;
worker_processes 2;
# error_log logs/error.log
# error_log logs/error.log notice
# error_log logs/error.log info
# pid logs/nginx.pid
worker_rlimit_nofile 1024;
As configurações acima são todos os itens de configuração armazenados no módulo de configuração global principal
- user é usado para especificar o usuário em execução e o grupo de usuários do processo de trabalho nginx , e a conta padrão nobody é executada
- worker_processes especifica o número de subprocessos a serem abertos pelo nginx , e monitora o consumo de memória de cada processo durante a operação ( geralmente variando de alguns M a dezenas de M ) e o ajusta de acordo com a situação real, geralmente o número é um múltiplo inteiro do número de núcleos da CPU
- error_log define a localização e o nível de saída do arquivo de log de erros [ debug/info/notice/warn/error/crit ]
- pid é usado para especificar a localização do arquivo de armazenamento do ID do processo
- worker_rlimit_nofile é usado para especificar a descrição do número máximo de arquivos que um processo pode abrir
2) módulo de evento
event {
worker_connections 1024;
multi_accept on;
use epoll;
}
As configurações acima são algumas configurações operacionais para o modo de trabalho do servidor nginx
- worker_connections especifica o número máximo de conexões que podem ser recebidas ao mesmo tempo.Deve-se observar aqui que o número máximo de conexões é determinado em conjunto com processos de trabalho .
- A configuração multi_accept especifica que o nginx aceita quantas conexões forem possíveis depois de receber uma nova notificação de conexão
- A configuração de uso de epoll especifica o método de pesquisa de encadeamento, se for linux2.6+ , use epoll , se for BSD como Mac , use Kqueue
3) módulo http
Como um servidor web, o módulo http é o módulo principal do nginx, e há muitos itens de configuração. Haverá muitos cenários de negócios reais no projeto, que precisam ser configurados adequadamente de acordo com as informações de hardware. Normalmente, a configuração padrão pode ser usado
http {
##
# 基础配置
##
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
# server_tokens off;
# server_names_hash_bucket_size 64;
# server_name_in_redirect off;
include /etc/nginx/mime.types;
default_type application/octet-stream;
##
# SSL证书配置
##
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
ssl_prefer_server_ciphers on;
##
# 日志配置
##
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
##
# Gzip 压缩配置
##
gzip on;
gzip_disable "msie6";
# gzip_vary on;
# gzip_proxied any;
# gzip_comp_level 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
# gzip_types text/plain text/css application/json application/javascript
text/xml application/xml application/xml+rss text/javascript;
##
# 虚拟主机配置
##
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
1) Configuração básica
sendfile on : configure para fazer o sendfile funcionar e entregar o processo de write-back do arquivo para o buffer de dados para concluir, em vez de concluí-lo no aplicativo, o que é benéfico para a melhoria do desempenho
tc_nopush on : permite que o nginx envie todos os arquivos de cabeçalho em um pacote de dados em vez de enviá-los um por um
tcp_nodelay on : Deixe o nginx não armazenar dados em cache, mas envie-os peça por peça. Se a transmissão de dados tiver requisitos de tempo real, você pode configurá-la. Você pode obter o valor de retorno imediatamente após enviar um pequeno pedaço de dados, mas não abusar disso.
keepalive_timeout 10 : Atribua o tempo limite de conexão ao cliente e o servidor fechará a conexão após esse tempo. Geralmente, o tempo de configuração é curto, o que pode fazer o nginx funcionar de forma mais contínua
client_header_timeout 10 : Defina o tempo limite do cabeçalho da solicitação
client_body_timeout 10: Defina o tempo limite do corpo da solicitação
send_timeout 10 : Especifique o tempo limite de resposta do cliente, se o intervalo entre duas operações do cliente exceder esse tempo, o servidor fechará a conexão
limit_conn_zone $binary_remote_addr zone=addr:5m : Defina os parâmetros da memória compartilhada usada para salvar várias chaves ,
limit_conn addr 100: A chave fornecida define o número máximo de conexões
server_tokens : embora não torne o nginx mais rápido, você pode desativar o prompt de versão do nginx na página de erro, o que é bom para melhorar a segurança do site.
include /etc/nginx/mime.types : especifica a diretiva para incluir outro arquivo no arquivo atual
default_type application/octet-stream : Especifica que o tipo de arquivo processado por padrão pode ser binário
type_hash_max_size 2048 : confunde dados, afeta a taxa de colisão de três colunas, quanto maior o valor, mais memória é consumida, a taxa de colisão da chave hash será reduzida e a velocidade de recuperação será mais rápida; quanto menor o valor , a chave será ocupa menos memória, maior a taxa de colisão e a velocidade de recuperação diminui
2) Configuração de registro
access_log logs/access.log : Defina o log para armazenar registros de acesso
error_log logs/error.log : Defina o log para armazenar e registrar erros
3) Criptografia de certificado SSL
ssl_protocols : A instrução é usada para iniciar um protocolo de criptografia específico. Após a versão 1.1.13 e 1.0.12, o padrão nginx é ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2, TLSv1.1 e TLSv1.2 deve garantir que OpenSSL >= 1.0 .1, o SSLv3 ainda é usado em muitos lugares, mas há muitas vulnerabilidades exploradas.
ssl prefere cifras do servidor : ao definir o algoritmo de criptografia de negociação, o conjunto de cifras do nosso servidor é preferido em vez do conjunto de cifras do navegador do cliente
4) Configuração de compressão
gzip é dizer ao nginx para enviar dados na forma de compactação gzip . Isso reduzirá a quantidade de dados que enviamos.
gzip_disable desativa a funcionalidade gzip para o cliente especificado . Definimos para IE6 ou inferior para tornar nossa solução amplamente compatível.
gzip_static diz ao nginx para procurar recursos pré-processados pelo gzip antes de compactá-los . Isso requer que você pré-compacte seus arquivos (comentado neste exemplo), permitindo que você use a taxa de compactação mais alta para que o nginx não precise mais compactar esses arquivos (para mais informações sobre gzip_static , clique aqui) .
gzip_proxied ativa ou desativa a compactação de fluxos de resposta baseados em solicitação e resposta. Definimos como any , o que significa que todas as solicitações serão compactadas.
gzip_min_length define o número mínimo de bytes para permitir a compactação de dados. Se uma solicitação for menor que 1.000 bytes, é melhor não compactá-la, porque a compactação de dados tão pequenos atrasará todos os processos que lidam com essa solicitação.
gzip_comp_level define o nível de compactação dos dados. Esse nível pode ser qualquer valor entre 1-9 , sendo 9 o mais lento, porém mais compressivo. Definimos como 4 , o que é um compromisso.
gzip_type define o formato de dados que precisa ser compactado. Já existem alguns no exemplo acima, e você pode adicionar mais formatos.
5) Configuração do cache de arquivos
Quando open_file_cache abre o cache, ele também especifica o número máximo de caches e o tempo de cache. Podemos definir um tempo máximo relativamente alto para que possamos limpá-los após 20 segundos de inatividade .
open_file_cache_valid 在open_file_cache中指定检测正确信息的间隔时间。
open_file_cache_min_uses 定义了open_file_cache中指令参数不活动时间期间里最小的文件数。
open_file_cache_errors 指定了当搜索一个文件时是否缓存错误信息,也包括再次给配置中添加文件。我们也包括了服务器模块,这些是在不同文件中定义的。如果你的服务器模块不在这些位置,你就得修改这一行来指定正确的位置。
4)server模块
srever模块配置是http模块中的一个子模块,用来定义一个虚拟访问主机,也就是一个虚拟服务器的配置信息
server {
listen 80;
server_name localhost 192.168.3.126;
root /nginx/www;
index index.php index.html index.html;
charset utf-8;
access_log logs/access.log;
error_log logs/error.log;
......
}
核心配置信息如下:
- server:一个虚拟主机的配置,一个http中可以配置多个server
- server_name:用力啊指定ip地址或者域名,多个配置之间用空格分隔
- root:表示整个server虚拟主机内的根目录,所有当前主机中web项目的根目录
- index:用户访问web网站时的全局首页
- charset:用于设置www/路径中配置的网页的默认编码格式
- access_log:用于指定该虚拟主机服务器中的访问记录日志存放路径
- error_log:用于指定该虚拟主机服务器中访问错误日志的存放路径
5)location模块
location模块是nginx配置中出现最多的一个配置,主要用于配置路由访问信息
在路由访问信息配置中关联到反向代理、负载均衡等等各项功能,所以location模块也是一个非常重要的配置模块
1、基本配置
location / {
root /nginx/www;
index index.php index.html index.htm;
}
location /:表示匹配访问根目录
root:用于指定访问根目录时,访问虚拟主机的web目录
index:在不指定访问具体资源时,默认展示的资源文件列表
2、反向代理配置方式
通过反向代理代理服务器访问模式,通过proxy_set配置让客户端访问透明化
location / {
proxy_pass http://localhost:8888;
proxy_set_header X-real-ip $remote_addr;
proxy_set_header Host $http_host;
}
3、uwsgi配置
wsgi模式下的服务器配置访问方式
location / {
include uwsgi_params;
uwsgi_pass localhost:8888
}
6)upstream模块
upstream模块主要负责负载均衡的配置,通过默认的轮询调度方式来分发请求到后端服务器
简单的配置方式如下
upstream name {
ip_hash;
server 192.168.3.126:8000;
server 192.168.3.126:8001 down;
server 192.168.3.126:8002 max_fails=3;
server 192.168.3.126:8003 fail_timeout=20s;
server 192.168.3.126:8004 max_fails=3 fail_timeout=20s;
}
核心配置信息如下
- ip_hash:指定请求调度算法,默认是weight权重轮询调度,可以指定
- server host:port:分发服务器的列表配置
- -- down:表示该主机暂停服务
- -- max_fails:表示失败最大次数,超过失败最大次数暂停服务
- -- fail_timeout:表示如果请求受理失败,暂停指定的时间之后重新发起请求
五、反向代理的操作步骤
第一步:修改配置文件
gedit /etc/nginx/sites-available/default
第二步:将上图红框位置改为要代理的地址
# proxy_pass http://ip+port;
proxy_pass https://www.baidu.com;
第三步:让配置文件生效
/etc/init.d/nginx restart
第四步:IP地址加端口号访问(ip+port)
因为百度的网址截完图,到csdn的平台会变成破图,所以大家只要能够跳转到百度就代表反向代理成功!
以上就是小编所实践的内容,希望能够帮助到大家,感谢各位大佬的观看!!!
如果有侵权,联系小编,小编会立马删除有关内容或者注明出处!!!