Nginx 反向代理服务器的基本配置(八)

反向代理

正向代理,也就是传说中的代理,他的工作原理就像一个跳板,简单的说,我是一个用户,我访问不了某网站,但是我能访问一个代理服务器,这个代理服务器呢,他能访问那个我不能访问的网站,于是我先连上代理服务器,告诉他我需要那个无法访问网站的内容,代理服务器去取回来,然后返回给我。 从网站的角度,只在代理服务器来取内容的时候有一次记录,有时候并不知道是用户的请求,也隐藏了用户的资料,这取决于代理告不告诉网站。结论就是,正向代理 是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。

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

从用途上来讲:

   正向代理的典型用途是为在防火墙内的局域网客户端提供访问Internet的途径。

   正向代理还可以使用缓冲特性减少网络使用率。反向代理的典型用途是将防火墙后面的服务器提供给Internet用户访问。

   反向代理还可以为后端的多台服务器提供负载平衡,或为后端较慢的服务器提供缓冲服务。

   另外,反向代理还可以启用高级URL策略和管理技术,从而使处于不同web服务器系统的web页面同时存在于同一个URL空间下。

 

 

反向代理服务器的基本配置

1.proxy_pass

  

  proxy_pass URL;

    配置块 location if

    此配置将当前请求代理到URL参数指定的服务器上,URL可以是主机名或者IP地址加PORT的形式

    proxy_pass http://localhost:8000;

    也可以结合负载均衡实用<负载均衡会说明这种情况>

    也可以吧HTTP转换成HTTPS

    proxy_pass http://192.168.0.1;

    默认情况反向代理不转发请求中的Host头部,如果需呀设置抓发头部

        则 proxy_set_header Host $host;

2.proxy_method

    proxy_method method_name;

    配置块 http server location

    此配置项表示转发时的协议方法名:

        proxy_method POST;

    那么客户端发来的GET请求在转发时方法改为POST;


3.proxy_hide_header

 

   proxy_hide_header header1;

    配置块 http server location;

    Nginx会将上游服务器的响应转发给客户端,但默认不转发HTTP头部字段(Date Server X-Pad X-Accel-* )

    使用proxy_hide_header可以指定任意头部不能被转发

    proxy_hide_header Cache-Control;

    proxy_hide_header MicrosoftOfficeWebServer;

 

4.proxy_pass_header

    proxy_pass_header header1;

    配置块 http server location

    功能与 proxy_hide_header相反,是设置哪些头部允许转发.

    proxy_pass_header X-Accel-Redirect;


5.proxy_pass_request_body

    proxy_pass_request_body off|on;

    默认 on

    配置块 http server location;

    确定上游服务器是否向上游服务器转发HTTP包体


6.proxy_pass_request_header

    proxy_pass_request_header on | off;

    默认on

    配置块 http server location

    确定是否转发HTTP头部


7.proxy_redirect

 

   proxy_redirect [default | off |redirect |replacement]

    默认default

    配置块 http server location

    当上游服务响应时重定向或刷新(HTTP 301 302),proxy_redirect可以重设HTTP头部的location或refresh字段

 

    proxy_redirect http://locahost:8000/two/ http://frontend/one/;

    上游响应302,location是URI是http://locahost:8000/two/some/uri/

    那是实际转发给客户端的是 http://frontend/one/some/uri/;

    可以使用前面提到的ngx_http_core_module模块提供的变量

    proxy_redirect http://locahost:8000/two/ http://$host:server_port/;

    可以省略replacement参数的主机名部分,这时候用虚拟主机名填充

    proxy_redirect http://locahost:8000/two/ /one/;

 

    使用off参数的时候,将使location和refresh的字段维持不变

    proxy_redirect off;

 

    如果使用的 proxy_redirect default;

    下面两种配置是等效的

        location /{

            proxy_pass http://upstream:port/two/;

            proxy_redirect default;

        }

        location /{

            proxy_pass http://upstream:port/two/;

            proxy_redirect http://upstream:port/two/ /one/;

        }

8.proxy_next_upstream

  

  proxy_next_upstream [error |timeout |invalid_header |http_500 |http_502~504 |http_404 | off]

    默认 proxy_next_upstream error timeout;

    配置块 http server location

 

    此配置表示上游一台服务器转发请求出现错误时,继续换一套服务器处理这个请求

    其参数用来说明在那些情况下继续选择下一台上游服务器转发请求.

    error 向上游发起连接 发送请求 读取响应时出错

    timeout 发送请求或读取响应时出错

    invalid_header 上游服务器发送的响应时不合法

    http_500 上游响应500

    http_502 上游响应502

    http_503 上游响应503

    http_504 上游响应504

    http_404 上游响应404

    off      关闭proxy_next_upstream功能 只要一出错就选择另外一台上游再次出发

Nginx反向代理模块中还提供很多配置,如设置连接的超时时间,临时文件如何存储,如何缓存上游服务器响应等功能.

9.可以通过阅读 ngx_http_proxy_module了解更多详细情况

     

       #sudo vim /usr/local/nginx/conf/nginx.conf

 

            server {

                listen       80;

                server_name  localhost;

                location / {

                #保证代理机器能访问到 下面的机器并装有nginx  在主机号为100的机器上有响应网页

                proxy_pass http://192.168.1.100;

                root   html;

                index  index.html index.htm;

                }

            }

            sudo /usr/local/nginx/sbin/nginx -s reload

加一些判断条件获取到 对方请求的主机 防止别人代理到自己的主机上

 

猜你喜欢

转载自blog.csdn.net/qq_35448976/article/details/79512805