精华内容
下载资源
问答
  • nginx反向代理原理

    2019-08-23 21:33:01
    简介 ...nginx能够支撑5万并发链接,并且cpu、内存等资源消耗却非常低,运行非常稳定。 nginx可以作为web服务器,但更多的时候,我们把它作为网关,因为它具备...今天主要理解一下nginx反向代理原理。 什么是反向代理...

    简介

    Nginx是一个http服务器。是一个使用c语言开发的高性能的http 服务器/反向代理服务器及电子邮件代理服务器。nginx能够支撑5万并发链接,并且cpu、内存等资源消耗却非常低,运行非常稳定。
    nginx可以作为web服务器,但更多的时候,我们把它作为网关,因为它具备网关必备的功能:

    • 反向代理
    • 负载均衡
    • 动态路由
    • 请求过滤

    今天主要理解一下nginx反向代理的原理。

    什么是反向代理?

    • 代理:通过客户机的配置,实现让一台服务器代理客户机,客户的所有请求都交给代理服务器处理。
    • 反向代理:用一台服务器,代理真实服务器,用户访问时,不再是访问真实服务器,而是代理服务器。

    nginx可以当做反向代理服务器来使用:

    • 我们需要提前在nginx中配置好反向代理的规则,不同的请求,交给不同的真实服务器处理
    • 当请求到达nginx,nginx会根据已经定义的规则进行请求的转发,从而实现路由功能

    在这里插入图片描述

    客户端在访问时会先把请求发到nginx,http的默认端口是80,而nginx一直监听80端口,nginx收到请求后根据域名解析,映射到不同路径,实现反向代理。我们在浏览器访问时就不需要再用ip+端口的方式访问而是通过域名的方式,这样就不用暴露ip和端口,肯定更加安全。在架构上可以实现前后端的分离。

    在这里插入图片描述

    nginx代理配置

    在这里插入图片描述

    展开全文
  • nginx反向代理原理和配置讲解 最近有打算研读nginx源代码,看到网上介绍nginx可以作为一个反向代理服务器完成负载均衡。所以搜罗了一些关于反向代理服务器的内容,整理综合。  一 概述   反向代理(Reverse ...

    nginx反向代理原理和配置讲解

    最近有打算研读nginx源代码,看到网上介绍nginx可以作为一个反向代理服务器完成负载均衡。所以搜罗了一些关于反向代理服务器的内容,整理综合。

           一  概述          

                   反向代理(Reverse Proxy)方式是指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器;并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。

                   通常的代理服务器,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中。当一个代理服务器能够代理外部网络上的主机,访问内部网络时,这种代理服务的方式称为反向代理服务。

    图1  反向代理服务器的基本原理

           二  反向代理服务器的工作原理

                        反向代理服务器通常有两种模型,它可以作为内容服务器的替身,也可以作为内容服务器集群的负载均衡器。

                  1,作内容服务器的替身                     

                         如果您的内容服务器具有必须保持安全的敏感信息,如信用卡号数据库,可在防火墙外部设置一个代理服务器作为内容服务器的替身。当外部客户机尝试访问内容服务器时,会将其送到代理服务器。实际内容位于内容服务器上,在防火墙内部受到安全保护。代理服务器位于防火墙外部,在客户机看来就像是内容服务器。

                       当客户机向站点提出请求时,请求将转到代理服务器。然后,代理服务器通过防火墙中的特定通路,将客户机的请求发送到内容服务器。内容服务器再通过该通道将结果回传给代理服务器。代理服务器将检索到的信息发送给客户机,好像代理服务器就是实际的内容服务器(参见图 2)。如果内容服务器返回错误消息,代理服务器会先行截取该消息并更改标头中列出的任何 URL,然后再将消息发送给客户机。如此可防止外部客户机获取内部内容服务器的重定向 URL。

                      这样,代理服务器就在安全数据库和可能的恶意攻击之间提供了又一道屏障。与有权访问整个数据库的情况相对比,就算是侥幸攻击成功,作恶者充其量也仅限于访问单个事务中所涉及的信息。未经授权的用户无法访问到真正的内容服务器,因为防火墙通路只允许代理服务器有权进行访问。

                     

    图2  反向代理服务器作为内容服务器的替身

                       可以配置防火墙路由器,使其只允许特定端口上的特定服务器(在本例中为其所分配端口上的代理服务器)有权通过防火墙进行访问,而不允许其他任何机器进出。

                   2,作为内容服务器的负载均衡器

                       可以在一个组织内使用多个代理服务器来平衡各 Web 服务器间的网络负载。在此模型中,可以利用代理服务器的高速缓存特性,创建一个用于负载平衡的服务器池。此时,代理服务器可以位于防火墙的任意一侧。如果 Web 服务器每天都会接收大量的请求,则可以使用代理服务器分担 Web 服务器的负载并提高网络访问效率。

                       对于客户机发往真正服务器的请求,代理服务器起着中间调停者的作用。代理服务器会将所请求的文档存入高速缓存。如果有不止一个代理服务器,DNS 可以采用“循环复用法”选择其 IP 地址,随机地为请求选择路由。客户机每次都使用同一个 URL,但请求所采取的路由每次都可能经过不同的代理服务器。

                       可以使用多个代理服务器来处理对一个高用量内容服务器的请求,这样做的好处是内容服务器可以处理更高的负载,并且比其独自工作时更有效率。在初始启动期间,代理服务器首次从内容服务器检索文档,此后,对内容服务器的请求数会大大下降。

    图3  反向代理服务器作为负载均衡器

    参考内容:

        1,百度百科

        2,http://www.oracle.com/technetwork/indexes/documentation/index.html

    转自:https://www.cnblogs.com/anruy/p/4989161.html

    展开全文
  • nginx反向代理原理讲解

    千次阅读 2019-04-02 23:51:32
    反向代理(Reverse Proxy)方式是指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器;并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器对外就表现为一个...

    一 、概述          
           反向代理(Reverse Proxy)方式是指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器;并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。
           通常的代理服务器,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中。当一个代理服务器能够代理外部网络上的主机,访问内部网络时,这种代理服务的方式称为反向代理服务。

    二、反向代理服务器的工作原理
           反向代理服务器通常有两种模型,它可以作为内容服务器的替身,也可以作为内容服务器集群的负载均衡器。
    1、作内容服务器的替身                     
           如果您的内容服务器具有必须保持安全的敏感信息,如信用卡号数据库,可在防火墙外部设置一个代理服务器作为内容服务器的替身。当外部客户机尝试访问内容服务器时,会将其送到代理服务器。实际内容位于内容服务器上,在防火墙内部受到安全保护。代理服务器位于防火墙外部,在客户机看来就像是内容服务器。
           当客户机向站点提出请求时,请求将转到代理服务器。然后,代理服务器通过防火墙中的特定通路,将客户机的请求发送到内容服务器。内容服务器再通过该通道将结果回传给代理服务器。代理服务器将检索到的信息发送给客户机,好像代理服务器就是实际的内容服务器(参见图 2)。如果内容服务器返回错误消息,代理服务器会先行截取该消息并更改标头中列出的任何 URL,然后再将消息发送给客户机。如此可防止外部客户机获取内部内容服务器的重定向 URL。
           这样,代理服务器就在安全数据库和可能的恶意攻击之间提供了又一道屏障。与有权访问整个数据库的情况相对比,就算是侥幸攻击成功,作恶者充其量也仅限于访问单个事务中所涉及的信息。未经授权的用户无法访问到真正的内容服务器,因为防火墙通路只允许代理服务器有权进行访问。

            可以配置防火墙路由器,使其只允许特定端口上的特定服务器(在本例中为其所分配端口上的代理服务器)有权通过防火墙进行访问,而不允许其他任何机器进出。

    2、作为内容服务器的负载均衡器
            可以在一个组织内使用多个代理服务器来平衡各 Web 服务器间的网络负载。在此模型中,可以利用代理服务器的高速缓存特性,创建一个用于负载平衡的服务器池。此时,代理服务器可以位于防火墙的任意一侧。如果 Web 服务器每天都会接收大量的请求,则可以使用代理服务器分担 Web 服务器的负载并提高网络访问效率。
            对于客户机发往真正服务器的请求,代理服务器起着中间调停者的作用。代理服务器会将所请求的文档存入高速缓存。如果有不止一个代理服务器,DNS 可以采用“循环复用法”选择其 IP 地址,随机地为请求选择路由。客户机每次都使用同一个 URL,但请求所采取的路由每次都可能经过不同的代理服务器。
            可以使用多个代理服务器来处理对一个高用量内容服务器的请求,这样做的好处是内容服务器可以处理更高的负载,并且比其独自工作时更有效率。在初始启动期间,代理服务器首次从内容服务器检索文档,此后,对内容服务器的请求数会大大下降。

    nginx反向代理原理讲解及配置:https://www.cnblogs.com/anruy/p/4989161.html 

    展开全文
  • 最近有打算研读nginx源代码,看到网上介绍nginx可以作为一个反向代理服务器完成负载均衡。所以搜罗了一些关于反向代理服务器的内容,整理综合。 一 概述 反向代理(Reverse Proxy)方式是指以代理服务器来接受...

    最近有打算研读nginx源代码,看到网上介绍nginx可以作为一个反向代理服务器完成负载均衡。所以搜罗了一些关于反向代理服务器的内容,整理综合。

       一  概述          
    
               反向代理(Reverse Proxy)方式是指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器;并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。
    
               通常的代理服务器,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中。当一个代理服务器能够代理外部网络上的主机,访问内部网络时,这种代理服务的方式称为反向代理服务。
    

    图1 反向代理服务器的基本原理

       二  反向代理服务器的工作原理
    
                    反向代理服务器通常有两种模型,它可以作为内容服务器的替身,也可以作为内容服务器集群的负载均衡器。
    
              1,作内容服务器的替身                     
    
                     如果您的内容服务器具有必须保持安全的敏感信息,如信用卡号数据库,可在防火墙外部设置一个代理服务器作为内容服务器的替身。当外部客户机尝试访问内容服务器时,会将其送到代理服务器。实际内容位于内容服务器上,在防火墙内部受到安全保护。代理服务器位于防火墙外部,在客户机看来就像是内容服务器。
    
                   当客户机向站点提出请求时,请求将转到代理服务器。然后,代理服务器通过防火墙中的特定通路,将客户机的请求发送到内容服务器。内容服务器再通过该通道将结果回传给代理服务器。代理服务器将检索到的信息发送给客户机,好像代理服务器就是实际的内容服务器(参见图 2)。如果内容服务器返回错误消息,代理服务器会先行截取该消息并更改标头中列出的任何 URL,然后再将消息发送给客户机。如此可防止外部客户机获取内部内容服务器的重定向 URL。
    
                  这样,代理服务器就在安全数据库和可能的恶意攻击之间提供了又一道屏障。与有权访问整个数据库的情况相对比,就算是侥幸攻击成功,作恶者充其量也仅限于访问单个事务中所涉及的信息。未经授权的用户无法访问到真正的内容服务器,因为防火墙通路只允许代理服务器有权进行访问。
    

    图2 反向代理服务器作为内容服务器的替身

                   可以配置防火墙路由器,使其只允许特定端口上的特定服务器(在本例中为其所分配端口上的代理服务器)有权通过防火墙进行访问,而不允许其他任何机器进出。
    
               2,作为内容服务器的负载均衡器
    
                   可以在一个组织内使用多个代理服务器来平衡各 Web 服务器间的网络负载。在此模型中,可以利用代理服务器的高速缓存特性,创建一个用于负载平衡的服务器池。此时,代理服务器可以位于防火墙的任意一侧。如果 Web 服务器每天都会接收大量的请求,则可以使用代理服务器分担 Web 服务器的负载并提高网络访问效率。
    
                   对于客户机发往真正服务器的请求,代理服务器起着中间调停者的作用。代理服务器会将所请求的文档存入高速缓存。如果有不止一个代理服务器,DNS 可以采用“循环复用法”选择其 IP 地址,随机地为请求选择路由。客户机每次都使用同一个 URL,但请求所采取的路由每次都可能经过不同的代理服务器。
    
                   可以使用多个代理服务器来处理对一个高用量内容服务器的请求,这样做的好处是内容服务器可以处理更高的负载,并且比其独自工作时更有效率。在初始启动期间,代理服务器首次从内容服务器检索文档,此后,对内容服务器的请求数会大大下降。
    

    图3 反向代理服务器作为负载均衡器

    参考内容:

    1,百度百科
    
    2,http://www.oracle.com/technetwork/indexes/documentation/index.html
    

    Chapter: Nginx基本操作释疑
    1. Nginx的端口修改问题
    2. Nginx 301重定向的配置
    3. Windows下配置Nginx使之支持PHP
    4. Linux下配置Nginx使之支持PHP
    5. 以源码编译的方式安装PHP与php-fpm
    6. Nginx多站点配置的一次实践
    7. Nginx反向代理的配置
    Nginx 作为 web 服务器一个重要的功能就是反向代理。其实我们在前面的一篇文章《Nginx多站点配置的一次实践》里,用的就是 Nginx 的反向代理,这里简单再提一下。

    下面是配置 Nginx 作为 tornado 的反向代理的设置:

    01 upstream tornado {
    02 server 127.0.0.1:8888;
    03 }
    04
    05 server {
    06 listen 80;
    07 root /root/nmapp2_venv;
    08 index index.py index.html;
    09
    10 server_name server;
    11
    12 location / {
    13 #if (!-e request_filename) {  
    14          #    rewrite ^/(.*)
    /index.py/1 last;  
    15          #}  
    16      }  
    17  
    18      location ~ /index.py {  
    19          proxy_pass_header Server;  
    20          proxy_set_header Host
    http_host;
    21 proxy_set_header X-Real-IP remoteaddr;22proxysetheaderXScheme scheme;
    23 proxy_pass http://tornado;
    24 }
    25 }
    Nginx 反向代理的指令不需要新增额外的模块,默认自带 proxy_pass 指令,只需要修改配置文件就可以实现反向代理。

    再举一个例子吧。比如要配置后端跑 apache 服务的 ip 和端口,也就是说,我们的目标是实现通过 http://ip:port 能访问到你的网站。

    只要新建一个 vhost.conf,加入如下内容(记得修改 ip 和域名为你的 ip 和域名)。修改nginx.conf,添加 include quancha.conf 到http{}段, reload nginx就可以了。

    Nginx 反向代理模板:

    01 ## Basic reverse proxy server ##
    02 upstream apachephp {
    03 server ip:8080; #Apache
    04 }
    05
    06 ## Start www.nowamagic.net ##
    07 server {
    08 listen 80;
    09 server_name www.nowamagic.net;
    10
    11 access_log logs/quancha.access.log main;
    12 error_log logs/quancha.error.log;
    13 root html;
    14 index index.html index.htm index.php;
    15
    16 ## send request back to apache ##
    17 location / {
    18 proxy_pass http://apachephp;
    19
    20 #Proxy Settings
    21 proxy_redirect off;
    22 proxy_set_header Host host;23proxysetheaderXRealIP remote_addr;
    24 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    25 proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
    26 proxy_max_temp_file_size 0;
    27 proxy_connect_timeout 90;
    28 proxy_send_timeout 90;
    29 proxy_read_timeout 90;
    30 proxy_buffer_size 4k;
    31 proxy_buffers 4 32k;
    32 proxy_busy_buffers_size 64k;
    33 proxy_temp_file_write_size 64k;
    34 }
    35 }
    这就完成了 Nginx 反向代理配置。

    ——使用过的配置

    user nobody;

    worker_processes 4;
    error_log logs/error.log;

    error_log logs/error.log notice;

    error_log logs/error.log info;

    pid logs/nginx.pid;

    worker_rlimit_nofile 204800;

    events {
    worker_connections 16384;
    multi_accept on;
    use epoll;
    }

    http {
    include mime.types;
    default_type application/octet-stream;

    log_format  test166  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for" '
                      '"[$request_time]" "[$upstream_response_time]" '
                      '"[$connection]" "[$connection_requests]" '
                      '"$http_imei" "$http_mobile" "$http_type" "$http_key" "$cookie_sfpay_jsessionid"';
    access_log  logs/access.log  test166;
    
    sendfile        on;
    #tcp_nopush     on;
    underscores_in_headers on;
    
    keepalive_timeout  65;
    proxy_connect_timeout 120;
    proxy_read_timeout 120;
    proxy_send_timeout 60;
    proxy_buffer_size 16k;
    proxy_buffers 4 64k;
    proxy_busy_buffers_size 128k;
    proxy_temp_file_write_size 128k;
    proxy_temp_path /home/temp_dir;
    proxy_cache_path /home/cache levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g;
    
    client_header_buffer_size 12k;
    open_file_cache max=204800 inactive=65s;
    open_file_cache_valid 30s;
    open_file_cache_min_uses 1;
    
    
    
    gzip  on;
    gzip_types       text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png image/jpg;
    
    upstream ims-oms {
        server 1.1.240.31:8001;
    }
    
    upstream anruy-tomcat {
    server 1.1.231.54:8080;
    server 1.1.231.55:8080;
        keepalive 40;
    }
    
    upstream anruy-tomcat {
    server 1.1.231.84:8080;
    server 1.1.231.85:8080;
    keepalive 40;
    }  
    
    # HTTP server
    #
    server {
        listen       8080;
        server_name  anruy01-sit;
    
    
        location ~ (etc/passwd|\.php|\.asp|win.ini)$ {
        deny    all;
        }
        location /nginx_status {
                stub_status on;
                access_log off;
        }
        location /ims/{
            proxy_pass  http://ims-oms/ims/;
                proxy_set_header  X-Real-IP  $remote_addr;
                 proxy_set_header Host $host;
    
        }
     location /anruy/ {
            proxy_pass  http://anruy-tomcat/anruy/remote/interface;
            proxy_set_header  X-Real-IP  $remote_addr;
            proxy_set_header Host $host:1443;
            proxy_http_version 1.1;
            proxy_set_header Connection keep-alive;
            proxy_set_header Keep-Alive 600;
            keepalive_timeout 600;
        }
    
        location /anruy-front/ {
            proxy_pass  http://anruy-tomcat/anruy-front/remote/interface;
            proxy_set_header  X-Real-IP  $remote_addr;
            proxy_set_header Host $host:1443;
            proxy_http_version 1.1;
            proxy_set_header Connection keep-alive;
        proxy_set_header Keep-Alive 600;
            keepalive_timeout 600;
        }
    
        location / {
            root   html;
            index  index.html index.htm;
        }
         #   client_body_temp_path  /usr/local/nginx/html/tmp;
         #   dav_access             group:rw  all:r;
         #   index  index.html index.htm *.jsp   ;
         #   proxy_set_header  X-Real-IP  $remote_addr;
         #   client_max_body_size  100m;
        }
    

    }
    原文 http://www.cnblogs.com/anruy/p/4989161.html

    展开全文
  • From:http://zcnick.blog.51cto.com/1992444/7746621、反向代理的概念反向代理(ReverseProxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果...
  • nginx概述nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器;同时也是一个IMAP、POP3、SMTP代理服务器;...反向代理负载均衡nginx特点1. 反向代理关于代理 说到代理,首先我们要明确一个概念,所谓...
  • nginx反向代理

    2019-10-18 21:04:25
    一.nginx反向代理原理 1.前端发起请求,nginx代理根据路由判断是要请求前端页面还是请求后端数据,然后达到分发的目的。 2.nginx用做静态服务和负载均衡,以及反向代理,本文主要介绍如何配置简易的nginx反向代理...
  • Nginx 反向代理工作原理简介与配置详解 - 李雄 本资料共包含以下附件: Nginx 反向代理工作原理简介与配置详解 - 李雄.pdf
  • Nginx反向代理工作原理简介与配置详解-李雄。
  • Nginx反向代理工作原理简介与配置详解-.pdf
  • Nginx反向代理

    千次阅读 2020-12-24 19:02:22
    文章目录Nginx系列文章目录nginx介绍nginx正向代理介绍一、反向代理简介二、反向代理原理三、反向代理作用总结 nginx介绍 nginx介绍:https://blog.csdn.net/qq_45937199/article/details/111637912 nginx正向代理...
  • nginx 反向代理

    2019-10-16 15:01:12
    Nginx(三)------nginx 反向代理 目录 1、代理 2、正向代理 3、反向代理 4、Nginx 反向代理 5、Nginx 反向代理相关指令介绍 ①、listen ②、server_name ③、location ④、proxy_pass ⑤、index ...
  • nginx反向代理服务器的工作原理
  • Nginx 反向代理

    2019-08-14 08:43:21
    如果想理解Nginx反向代理,可以先去了解一下分离解析的原理 [传送门]https://blog.csdn.net/ck784101777/article/details/96473645 区别在于,反向代理是基于Nginx的,而分离解析则基于DNS,通常而言,先走dns...
  • nginx反向代理tomcat

    千次阅读 2018-09-26 16:24:07
    nginx反向代理tomcat 本文由个人总结,如需转载使用请标明原著及原文地址 首先你要有tomcat和nginx 没有装tomcat的点这里!!!!! 没有装nginx的点这里!!!!!! nginx反向代理tomcat其实很简单只需要修改...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 26,942
精华内容 10,776
关键字:

nginx反向代理原理