[] Nginx Nginx implantação de combate - arquivos estáticos + + carga proxy reverso equilibrar + https + websocket

Nginx é um pelo designer russo procedimentos Igor Sysoev desenvolvido servidor de alto desempenho na Web e proxy reverso, também um servidor IMAP / POP3 / SMTP proxy. Algum tempo atrás eu ouvi que Igor Sysoev da Rússia foi levado pela polícia, eu não sei não colocar para fora. Como falar de retorno ao normal, olhar para a configuração nginx para atender às nossas necessidades diárias.

0. chocolates instalar nginx

Porque os blogueiros estão em janelas mão, de modo que as janelas introduzir directamente como instalar nginx, se você quiser saber como instalar no Linux, leia outro artigo http://www.randyfield.cn/post/2019-06-01-netcore -centos / # 3-nginx

Lembro-me em CentOS não é um yumgerenciador de pacotes, e que o Windows sob ela? Não existem coisas tão fáceis? A resposta é sim, http://www.randyfield.cn/post/2019-06-01-netcore-centos/#4-%E5%AE%88%E6%8A%A4%E8%BF%9B%E7 A8%. 8B% ,

chocolatey

  • instalação achocolatada
Get-ExecutionPolicy

#如果返回的是Restricted
#就运行如下命令
Set-ExecutionPolicy AllSigned

#或者
Set-ExecutionPolicy Bypass -Scope Process

#接着执行-Paste the follow text into your shell and press Enter
#Wait a few seconds for the command to complete
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

#If you don't see any errors, you are ready to use Chocolatey
  • instale nginx
choco install nginx

Há dois pontos a nota

  1. Através chocoda instalação nginx, que vai apoiar a instalação NSSM, que é uma coisa boa, pode ser nginxregistrado como windows服务equivalente a no Linux SupervisorePM2

  2. Ao chocoinstalar nginx, você concorda com a última necessidade de selecionar y[Yes]antes, preste atenção ao conteúdo de write-back é que ele irá executar C:\ProgramData\chocolatey\lib\nginx\tools\chocolateyInstall.ps1o script

    $toolsDir = Split-Path -parent $MyInvocation.MyCommand.Definition
    . "$toolsDir\helpers.ps1"
    
    $pp = Get-PackageParameters
    
    $arguments = @{
        packageName = $env:chocolateyPackageName
        file        = "$toolsDir\nginx-1.17.8.zip"
        destination = if ($pp.installLocation) { $pp.installLocation } else { Get-ToolsLocation }
        port        = if ($pp.Port) { $pp.Port } else { 80 }
        serviceName = if ($pp.NoService) { $null } elseif ($pp.serviceName) { $pp.serviceName } else { 'nginx' }
    }
    
    if (-not (Assert-TcpPortIsOpen $arguments.port)) {
        throw 'Please specify a different port number...'
    }
    
    Install-Nginx $arguments
    

    Observe a portlinha de que, sim, 80端口, padrão nginx, por isso antes de prosseguir, a próxima verificação 80端口não estiver em uso, será ocupado pela instalação falhar. Como fazer? Isto é, você só precisa editar o script acima, para 80modificar um 未被占用的端口. Em seguida, proceder de volta para a janela de comando, selecione Y, você pode ser bem sucedido.

    Por exemplo, eu mudei para

    $toolsDir = Split-Path -parent $MyInvocation.MyCommand.Definition
    . "$toolsDir\helpers.ps1"
    
    $pp = Get-PackageParameters
    
    $arguments = @{
        packageName = $env:chocolateyPackageName
        file        = "$toolsDir\nginx-1.17.8.zip"
        destination = if ($pp.installLocation) { $pp.installLocation } else { Get-ToolsLocation }
        port        = if ($pp.Port) { $pp.Port } else { 81 }
        serviceName = if ($pp.NoService) { $null } elseif ($pp.serviceName) { $pp.serviceName } else { 'nginx' }
    }
    
    if (-not (Assert-TcpPortIsOpen $arguments.port)) {
        throw 'Please specify a different port number...'
    }
    
    Install-Nginx $arguments

Instalada nginxem C:\toolsabaixo, o arquivo de configuração será configurado como padrão de inicialização próxima seção

1. Configuração Inicial

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       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  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       81;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       81;
    #    listen       81;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    #server {
    #    listen       81 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}

2. arquivos estáticos Implantar

Na verdade, essa é uma implementação de arquivo de inicialização estática

/Pedido para o htmlpasta index.htmlde arquivo

worker_processes  1;

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       81;
        server_name  localhost;

        location / {
            root   html;
            index  index.html index.htm;
        }
        
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

3. Implantar arquivos estáticos Vue construído

Vue citou documentos oficiais - " vue-routerdefault hash 模式- use o URL para simular um hash completa da URL, por isso, quando as mudanças de URL, a página não recarregar, mas aqui urlhá um #, só pode ser alterado o modo história , mas esta modos de jogar bem, mas também o suporte de configuração de fundo. porque a nossa aplicação é uma aplicação cliente de uma única página, se o fundo não é a configuração correta, quando um usuário para acessar diretamente o navegador irá retornar 404, o que não parece bom. você precisa além try_files $uri $uri/ /index.html;"

try_files significado é: Em primeiro lugar irá corresponder $uri文件, se não corresponder $url/文件, se não há vontade de ir/index.html

worker_processes  1;

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       81;
        server_name  localhost;

        location / {
            root   html;
            index  index.html index.htm;
            try_files $uri $uri/ /index.html;
            #proxy_redirect off;
        }
        
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

4. proxy reverso

Implantação de extremidades traseiras extremidades traseiras da frente da frente e e com o domínio isolado

pedaço de back-end pode ser implantado no IIS, Nó, servidor web Apache, etc., mas não quero codificar o front-end de back-end pedido api url, e se o backend não permite cross Adicionar cabeçalho da solicitação, o navegador será bloqueado.

worker_processes  1;

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       81;
        server_name  localhost;

        location / {
            root   html;
            index  index.html index.htm;
            try_files $uri $uri/ /index.html;
            #proxy_redirect off;
        }
        
        location /api/ {
            proxy_pass http://ip:port/outside/api/; #反向代理
            proxy_http_version 1.1;
            
            proxy_set_header Host $http_host;
            proxy_cookie_path /api /;
            
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection keep-alive;
            proxy_cache_bypass $http_upgrade;
        }
        
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

Essa chamada de interface-end http://ip:81/api/pedido, será proxy reverso http://ip:port/outside/api/, se você não tem o fundo para permitir a configuração de domínio cruzado, então esta é a maneira de enganar o navegador solução.

5. O balanceamento de carga

frente popular e extremidade traseira do modo de separação, além de uma série de vantagens de eficiência paralelas resolver problemas antes e após o fim do desenvolvimento, a libertação de produtividade, dissociação, localizar rapidamente problemas, há uma expansão horizontal. Grandes servidores concorrente caso, dianteiras e traseiras, ao mesmo tempo, pode se expandir horizontalmente, esta extensão no uso de balanceamento de carga.

worker_processes  1;

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    
    #api接口部署至3个不同的地方
    upstream centerapi{
        server 192.168.110.10:82 weight=5;
        server 192.168.110.11:82 weight=3;
        server 192.168.110.10:83 weight=2;
    }

    server {
        listen       81;
        server_name  localhost;

        location / {
            root   html;
            index  index.html index.htm;
            try_files $uri $uri/ /index.html;
            #proxy_redirect off;
        }
        
        location /api/ {
            proxy_pass http://centerapi/; #反向代理
            proxy_http_version 1.1;
            proxy_redirect off;
            
            proxy_set_header Host $http_host;
            proxy_cookie_path /api /;
            
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection keep-alive;
            proxy_cache_bypass $http_upgrade;
            
            #暴露反向代理的地址
            #add_header backendIP $upstream_addr;
            #add_header backendCode $upstream_status;      
        }
        
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

Aqui o pedido api接口, nginxele vai re-alocados de acordo com o seguinte três privilégio pedido url

 upstream centerapi{
        server 192.168.110.10:82 weight=5;
        server 192.168.110.11:82 weight=3;
        server 192.168.110.10:83 weight=2;
    }

Se você quiser testar um endereço diferente cada vez que não é, vamos nginx encaminhar para tratar cada pedido é devolvido ao navegador em conjunto com a seguinte configuração

 #暴露反向代理的地址
 add_header backendIP $upstream_addr;
 add_header backendCode $upstream_status;  

implantação integração 6. subsistema

Nossa empresa tem uma ASP.NET MVCfusão de projetos antigos é separado da parte frontal e traseira do novo projeto

plataforma de projeto antigo, incluindo vários centros, um dos quais é o centro de novos projetos

  • /--- proxy reverso para IISimplantar a ASP.NET MVCestação mestre
  • ^~/center1--- páginas construção front-end estáticos, foi publicada por nginx
  • ^~/center1/api/--- interface de front-end para utilização API, carga proxy reverso equilibrar +
worker_processes  1;

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    
    upstream centerapi{
        server 192.168.110.10:82 weight=5;
        server 192.168.110.11:82 weight=3;
        server 192.168.110.10:83 weight=2;
    }
    server {
        listen       80;
        server_name  192.168.110.10;

        #主站
        location / {
            proxy_pass http://192.168.110.10/;#ASP.NET MVC主站 IIS已部署
            proxy_http_version 1.1;
            proxy_redirect off;
                 
            proxy_set_header Host $host;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection keep-alive;
            proxy_cache_bypass $http_upgrade;
        }
        
        #新中心前端
        location ^~/center1 {
            proxy_pass http://192.168.110.10:81/;#前端构建的静态页面 即下面的配置
            proxy_http_version 1.1;
            proxy_redirect off;
            
            proxy_set_header Host $host;         
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection keep-alive;
            proxy_cache_bypass $http_upgrade;
        }
        
        #新中心api
        location ^~/center1/api/ {
            proxy_pass http://centerapi/;#前端调用的接口
            proxy_http_version 1.1;
            proxy_redirect off;
            
            proxy_set_header Host $host;         
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection keep-alive;
            proxy_cache_bypass $http_upgrade;
        }
           
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

    server {
        listen       81;
        server_name  localhost;

        location / {
            root   html;
            index  index.html index.htm;
            try_files $uri $uri/ /index.html;
            #proxy_redirect off;
        }
        
        #location /api/ {
            #proxy_pass http://centerapi/; #反向代理
            #proxy_http_version 1.1;
            
            #proxy_set_header Host $http_host;
            #proxy_cookie_path /api /;
            
            #proxy_set_header Upgrade $http_upgrade;
            #proxy_set_header Connection keep-alive;
            #proxy_cache_bypass $http_upgrade;
            
            #暴露反向代理的地址
            #add_header backendIP $upstream_addr;
            #add_header backendCode $upstream_status;      
        #}
        
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

7.Https

Liderança que o IIS antes de você pode tornar seu site acessível através de https, novos projetos precisa, httpsnecessidade ssl证书, saiba que só os grandes Certificado empresas SSL, as pessoas vão reconhecer o navegador, como Symantec, Entrust, Geotrust, caso contrário não será relatado certificados confiáveis. Mas, a fim de atender as necessidades da liderança, ou por opensslgerar o respectivo certificado.

worker_processes  1;

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    
    upstream centerapi{
        server 192.168.110.10:82 weight=5;
        server 192.168.110.11:82 weight=3;
        server 192.168.110.10:83 weight=2;
    }
    server {
        listen       80;
        server_name  192.168.110.10;
        
        #ssl开启
        ssl on;
        ssl_certificate ssl/server.crt;
        ssl_certificate_key ssl/server.key;

        location / {
            proxy_pass http://192.168.110.10/;#ASP.NET MVC主站
            proxy_http_version 1.1;
            proxy_redirect off;
                 
            proxy_set_header Host $host;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection keep-alive;
            proxy_cache_bypass $http_upgrade;
        }
        
        location ^~/center1 {
            proxy_pass http://centerapi/;#前端构建的静态页面 即下面的配置
            proxy_http_version 1.1;
            proxy_redirect off;
            
            proxy_set_header Host $host;         
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection keep-alive;
            proxy_cache_bypass $http_upgrade;
        }
        
        location ^~/center1/api/ {
            proxy_pass http://192.168.110.10:81/;#前端调用的接口
            proxy_http_version 1.1;
            proxy_redirect off;
            
            proxy_set_header Host $host;         
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection keep-alive;
            proxy_cache_bypass $http_upgrade;
        }
        
       
        
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

    server {
        listen       81;
        server_name  localhost;

        location / {
            root   html;
            index  index.html index.htm;
            try_files $uri $uri/ /index.html;
            #proxy_redirect off;
        }
        
        #location /api/ {
            #proxy_pass http://centerapi/; #反向代理
            #proxy_http_version 1.1;
            
            #proxy_set_header Host $http_host;
            #proxy_cookie_path /api /;
            
            #proxy_set_header Upgrade $http_upgrade;
            #proxy_set_header Connection keep-alive;
            #proxy_cache_bypass $http_upgrade;
            
            #暴露反向代理的地址
            #add_header backendIP $upstream_addr;
            #add_header backendCode $upstream_status;      
        #}
        
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

8.Websocket

Sistema de repente aumentou websocket的服务o acesso, direto para ws://ip:porto front-end deve ser colocado um fim ao hard-coded, então nginxjogar novamente.

websocket协议Ao contrário http协议, mas websocketo protocolo de reconhecimento por http, implementado por um protocolo de comunicação para melhorar a websocket direcção de http.

8.1 ws

worker_processes  1;

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    
    upstream centerapi{
        server 192.168.110.10:82 weight=5;
        server 192.168.110.11:82 weight=3;
        server 192.168.110.10:83 weight=2;
    }
    upstream websocket{
        server 192.168.110.10:1443 weight=1;
    }
    server {
        listen       80;
        server_name  192.168.110.10;
        
        #ssl    on;
        #ssl_certificate ssl/server.crt;
        #ssl_certificate_key ssl/server.key;

        location / {
            proxy_pass http://192.168.110.10/;#ASP.NET MVC主站
            proxy_http_version 1.1;
            proxy_redirect off;
                 
            proxy_set_header Host $host;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection keep-alive;
            proxy_cache_bypass $http_upgrade;
        }
        
        location ^~/center1 {
            proxy_pass http://centerapi/;#前端构建的静态页面 即下面的配置
            proxy_http_version 1.1;
            proxy_redirect off;
            
            proxy_set_header Host $host;         
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection keep-alive;
            proxy_cache_bypass $http_upgrade;
        }
        
        location ^~/center1/api/ {
            proxy_pass http://192.168.110.10:81/;#前端调用的接口
            proxy_http_version 1.1;
            proxy_redirect off;
            
            proxy_set_header Host $host;         
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection keep-alive;
            proxy_cache_bypass $http_upgrade;
        }
        
        #websocket
        location ^~/websocket/ {
            proxy_pass http://websocket;#前端调用的接口
            proxy_http_version 1.1;
            proxy_redirect off;
            
            proxy_set_header Host $host;         
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "Upgrade";
            proxy_connect_timeout 4s;
            proxy_read_timeout 600;
            proxy_send_timeout 12s;
        }
       
        
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

    server {
        listen       81;
        server_name  localhost;

        location / {
            root   html;
            index  index.html index.htm;
            try_files $uri $uri/ /index.html;
            #proxy_redirect off;
        }
        
        #location /api/ {
            #proxy_pass http://centerapi/; #反向代理
            #proxy_http_version 1.1;
            
            #proxy_set_header Host $http_host;
            #proxy_cookie_path /api /;
            
            #proxy_set_header Upgrade $http_upgrade;
            #proxy_set_header Connection keep-alive;
            #proxy_cache_bypass $http_upgrade;
            
            #暴露反向代理的地址
            #add_header backendIP $upstream_addr;
            #add_header backendCode $upstream_status;      
        #}
        
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

8.2 WSS

AT (sites http de acesso, interfaces) circunstâncias normais, a configuração acima é completa, mas uma vez ssl on, o original ws, ele vai levar à saída do console

Mixed Content: The page at ‘https://{域名}.com/‘ was loaded over HTTPS, but attempted to connect to the insecure WebSocket endpoint ‘ws://{ip}:{port}/‘. This request has been blocked; this endpoint must be available over WSS.
Uncaught DOMException: Failed to construct 'WebSocket': An insecure WebSocket connection may not be initiated from a page loaded over HTTPS.

Você terá a seguinte configuração

worker_processes  1;

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    
    upstream centerapi{
        server 192.168.110.10:82 weight=5;
        server 192.168.110.11:82 weight=3;
        server 192.168.110.10:83 weight=2;
    }
    upstream websocket{
        server 192.168.110.10:1443 weight=1;
    }
    server {
        listen       80;
        server_name  192.168.110.10;
        
        ssl on;
        ssl_certificate ssl/server.crt;
        ssl_certificate_key ssl/server.key;
        ssl_session_timeout  5m;
        ssl_session_cache shared:SSL:50m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2  SSLv2 SSLv3;
        ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
        ssl_prefer_server_ciphers   on;

        location / {
            proxy_pass http://192.168.110.10/;#ASP.NET MVC主站
            proxy_http_version 1.1;
            proxy_redirect off;
                 
            proxy_set_header Host $host;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection keep-alive;
            proxy_cache_bypass $http_upgrade;
        }
        
        location ^~/center1 {
            proxy_pass http://centerapi/;#前端构建的静态页面 即下面的配置
            proxy_http_version 1.1;
            proxy_redirect off;
            
            proxy_set_header Host $host;         
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection keep-alive;
            proxy_cache_bypass $http_upgrade;
        }
        
        location ^~/center1/api/ {
            proxy_pass http://192.168.110.10:81/;#前端调用的接口
            proxy_http_version 1.1;
            proxy_redirect off;
            
            proxy_set_header Host $host;         
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection keep-alive;
            proxy_cache_bypass $http_upgrade;
        }
        
        location ^~/websocket/ {
            proxy_pass http://websocket;#前端调用的接口
            proxy_http_version 1.1;
            proxy_redirect off;
            
            proxy_set_header Host $host;         
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "Upgrade";
            proxy_connect_timeout 4s;
            proxy_read_timeout 600;
            proxy_send_timeout 12s;
        }
       
        
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

    server {
        listen       81;
        server_name  localhost;

        location / {
            root   html;
            index  index.html index.htm;
            try_files $uri $uri/ /index.html;
            #proxy_redirect off;
        }
        
        #location /api/ {
            #proxy_pass http://centerapi/; #反向代理
            #proxy_http_version 1.1;
            
            #proxy_set_header Host $http_host;
            #proxy_cookie_path /api /;
            
            #proxy_set_header Upgrade $http_upgrade;
            #proxy_set_header Connection keep-alive;
            #proxy_cache_bypass $http_upgrade;
            
            #暴露反向代理的地址
            #add_header backendIP $upstream_addr;
            #add_header backendCode $upstream_status;      
        #}
        
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

9. Perguntas Mais Frequentes

Quando a informação Nginx frente Header está perdido

Após o envio via Nginx, informações de cabeçalho está perdido em access_token, após investigação, descobriu Nginx de transmitir, sublinhado _ cabeçalho atributo padrão sem transmissão, é preciso aumentar a alocação:

server {
        listen       80;
        server_name  127.0.0.1;
        
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
        underscores_in_headers on;
}

operação proxy reverso expirou

Uma interface de proxy reverso, o negócio de processamento de interface de mais de 60 segundos, ele irá relatar time outo erro.

 proxy_read_timeout 600;

10. Ligações de Referência

https://blog.csdn.net/qq_29663071/article/details/80759098

https://www.nginx.com/blog/websocket-nginx/

https://blog.csdn.net/duyiwuerluozhixiang/article/details/100358930

Acho que você gosta

Origin www.cnblogs.com/RandyField/p/12535977.html
Recomendado
Clasificación