[linux] Implante o nginx no Ubuntu - proxy reverso do nginx

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 servidor proxy

2. Encaminhar procuração

1. O que é um proxy de encaminhamento

2. O papel do agente de encaminhamento

3. Proxy reverso

1. O que é um proxy reverso

2. O papel do proxy reverso

Perceber:

Quatro, configuração do Nginx

 1. O arquivo de configuração contém seis partes:

2. Explique resumidamente o significado do código de cada módulo:

1) módulo principal

2) módulo de evento

3) módulo http

4) módulo do servidor

5) módulo de localização

3. configuração uwsgi

6) módulo upstream

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:

  1. main: usado para configurar as informações globais do nginx
  2. eventos: configuração para o modo de trabalho nginx
  3. http: para alguma configuração de informações do protocolo http
  4. servidor: usado para configurar as informações de acesso ao servidor
  5. local: usado para configurar o roteamento de acesso
  6. 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的平台会变成破图,所以大家只要能够跳转到百度就代表反向代理成功!

以上就是小编所实践的内容,希望能够帮助到大家,感谢各位大佬的观看!!!

如果有侵权,联系小编,小编会立马删除有关内容或者注明出处!!!

Acho que você gosta

Origin blog.csdn.net/weixin_60387745/article/details/131119686
Recomendado
Clasificación