业界动态
Nginx 反向代理工作原理简介与配置详解
2024-11-19 03:11

Nginx反向代理工作原理简介与配置详解

Nginx 反向代理工作原理简介与配置详解

 

by:授客  QQ1033553122

 

CentOS 6.5-x86_64

 

nginx-1.10.0

下载地址:http://nginx.org/en/download.html

下载地址:http://pan.baidu.com/s/1skNT7zv

 

[root@localhost mnt]# tar -xzvf nginx-1.10.0.tar.gz

[root@localhost mnt]# cd nginx-1.10.0

[root@localhost nginx-1.10.0]# https://www.cnblogs.com/shouke/p/configure --prefix=/usr/local/ngnix --with-pcre=/mnt/pcre-8.36

Configuration summary

  + using PCRE library: /mnt/pcre-8.36

  + OpenSSL library is not used

  + using builtin md5 code

  + sha1 library is not found

  + using system zlib library

 

  nginx path prefix: "/usr/local/ngnix"

  nginx binary file: "/usr/local/ngnix/sbin/nginx"

  nginx modules path: "/usr/local/ngnix/modules"

  nginx configuration prefix: "/usr/local/ngnix/conf"

  nginx configuration file: "/usr/local/ngnix/conf/nginx.conf"

  nginx pid file: "/usr/local/ngnix/logs/nginx.pid"

  nginx error log file: "/usr/local/ngnix/logs/error.log"

  nginx http access log file: "/usr/local/ngnix/logs/access.log"

  nginx http client request body temporary files: "client_body_temp"

  nginx http proxy temporary files: "proxy_temp"

  nginx http fastcgi temporary files: "fastcgi_temp"

  nginx http uwsgi temporary files: "uwsgi_temp"

  nginx http scgi temporary files: "scgi_temp"

 

注:

1、编译时,指定了pcre安装目录,但是安装出错,解决方法如上,指定源码所在目录

2、如果不指定--with-pcre 选项,会报类似如下的错误

3、需要预先安装gcc-c++

 

[root@localhost nginx-1.10.0]# make && make install

[root@localhost nginx-1.10.0]# /usr/local/ngnix/sbin/nginx -c /usr/local/ngnix/conf/nginx.conf

 

客户端向反向代理发送请求,接着反向代理转发请求至目标服务器,并把获得的内容返回给客户端

Nginx 反向代理工作原理简介与配置详解

 

测试链接:

http://192.168.1.104/zentaopms/www/index.php

http://192.168.1.104/zentaopms/www/index.php?m=project&f=create

 

如上,想通过192.168.1.103代理服务器访问上述测试链接,具体咋操作呢?如下

 

编辑所使用的配置文件

[root@localhost nginx-1.10.0]# vim /usr/local/ngnix/conf/nginx.conf

 

找到“Server”结点,增加入下带背景色内容

    server {

        listen       80;

        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;

        }

 

        location /zentaopms/www/ {

            proxy_pass http://192.168.1.104;

        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80

        #

        #location ~ .php$ {

        #    proxy_pass   http://127.0.0.1;

        #}

 

重新加载配置文件

[root@localhost nginx-1.10.0]# /usr/local/ngnix/sbin/nginx -s reload

 

如下,OK

 Nginx 反向代理工作原理简介与配置详解

 

 

为了把请求传递给被代理服务器,需要在location中指定proxy_pass机制。如下

 

location /some/path/ {

    proxy_pass http://www.example.com/link/;

}

 

proxy_pass既可以是ip地址,也可以是域名,同时还可以指定端口

 

location ~ .php {

    proxy_pass http://127.0.0.1:8000;

}

 

注意:如果proxy_pass指定的地址携带了URI,如上例中 /link/,那么这里的URI将替换请求URI中匹配location参数的部分,比如 请求 /some/path/page.html,将被替换为http://www.example.com/link/page.html

 

另外,如果请求不是发往http类型的被代理服务器,则选择如下之一:

  • fastcgi_pass  传递请求给FastCGI 服务器
  • uwsgi_pass 传递请求给uwsgi服务器
  • scgi_pass传递请求给SCGI服务器
  • memcached_pass传递请求给memcached服务器

 

请求也可以发往一命名的组服务器,这种请求下,将根据指定方法,在这些服务器之中进行请求的分发。

 

默认的,nginx在被代理请求中定义两个头域:HostConnection,并且清除包含空值的头域。Host被设置为$proxy_host变量,而Connection则被设置为close

 

使用proxy_set_header机制可修改默认配置及其它头域的值。可以在location中,server上下文,http块或者其它更高层级中指定这种机制。

 

例子:

location /some/path/ {

    proxy_set_header Host $host;

    proxy_set_header X-Real-IP $remote_addr;

    proxy_pass http://localhost:8000;

}

 

如果想阻止某个头域被传递给被代理服务器,可以如下设置头域的值为空

location /some/path/ {

    proxy_set_header Accept-Encoding "";

    proxy_pass http://localhost:8000;

}

 

默认的,Ngnix buffering来自被代理服务器的响应。Ngnix在内部buffering中存储响应,直到收到整个响应后才发送给客户端。对于慢客户端来说,buffering可优化性能,这样,如果响应从Nginx同步传递给客户端,这将会浪费被代理服务器的时间。但是,如果开启bufferingNginx允许被代理服务器快速处理请求,因为Nginx会尽可能久的存储来自被代理服务器的响应,直到客户端下载它们。

 

使用proxy_buffering机制开启或关闭缓冲。默认的,开启缓冲。

 

proxy_buffers控制buffer大小和分配给请求的buffer数量。来自被代理服务器响应中的第一部分被存储在单一的buffer中,该buffer的大小由proxy_buffer_size设定。该部分通常包含一个相对较小的响应头,其大小可以设置成比用于存储剩余响应部分buffer小。

 

例子:

location /some/path/ {

    proxy_buffers 16 4k;

    proxy_buffer_size 2k;

    proxy_pass http://localhost:8000;

}

 

如果关闭buffering,当从被代理服务器接收到响应时,将被同步把响应发往客户端。这对于想尽快收到请求的快速交互客户端来说。这是其想要的。

 

例子:关闭buffering

location /some/path/ {

    proxy_buffering off;

    proxy_pass http://localhost:8000;

}

 

这种情况下,nginx只用proxy_buffer_size来存储响应的当前部分。

 

如果代理服务器有多个网络接口,有时候需要选择特定的源ip地址来连接到代理服务器。当被代理服务器被设置为只接受来自特定IP地址或者IP范围的连接请求时,这特别有用。

 

例:

location /app1/ {

    proxy_bind 127.0.0.1;

    proxy_pass http://example.com/app1/;

}

 

location /app2/ {

    proxy_bind 127.0.0.2;

    proxy_pass http://example.com/app2/;

}

 

ip地址也可以是一个变量

例:

location /app3/ {

    proxy_bind $server_addr;

    proxy_pass http://example.com/app3/;

}

 

参考链接:

https://www.nginx.com/resources/admin-guide/reverse-proxy/

 

    以上就是本篇文章【Nginx 反向代理工作原理简介与配置详解】的全部内容了,欢迎阅览 ! 文章地址:http://fabua.ksxb.net/news/864.html 
     文章      相关文章      动态      同类文章      热门文章      栏目首页      网站地图      返回首页 海之东岸资讯移动站 http://fabua.ksxb.net/mobile/ , 查看更多   
最新文章
《实战十一人》12月20日内测开启
t2627_2_2627_1:4.0t1-t0:45.0t2-t1:4.0t3-t2:0.0t4-t3:2.0t5-t4:32.0t6-t5:14.0t7-t6:3.0t8-t7:0.0t9-t8:15.0t10-t9:0.0t11-t10
“报关骗局”阿里云客服《APP》软件无法提现是骗局吗,不正规能追回吗?
〖→被骗请点击进入帮助平台提现追款〗〖→被骗请点击进入帮助平台提现追款〗希望阅读此文的读者能够及时采取措施以减少损失;请
微信公众号点击菜单拉取消息事件推送如何操作?
2、注册成功后,通过用户名和密码登录微号帮平台,立即登录6、粉丝点菜单定时推送:推送信息设置7、推送信息设置:自定义弹出信
p站加速器哪个好?手把手教你怎么进P站?
老司机说的P站是什么?网上很多人都在说P站,而还有不少小白们不懂P站是什么意思,在网上也搜不到答案。其实,P站是有两层意思的
"码海拾贝-趣探1688:免费源码的狂欢"
一瞥眼,成品网站源码1688免费推荐,嘿,这话题不就跟那菜市场里挑挑拣拣的大妈一样,热热闹闹,沸反盈天?今儿个,科技圈里这档
哪些平台最适合进行广告推广?
在当今数字化时代,推广广告已成为企业营销战略的重要组成部分,选择合适的平台进行广告投放对于提高品牌知名度、吸引潜在客户以
东莞外贸建站推广,东莞外贸网站推广,东莞谷歌SEO优化
  在当今全球化的市场环境下,外贸企业越来越依赖于互联网来拓展业务和提高度。为了在激烈的竞争中脱颖而出,提高外贸网站在搜
maya快捷键大全
MAYA快捷键大全免费领取q群:289728818“独学而无友,则孤陋而寡闻!欢迎广大站友进群交流学习Enter 完成当前操作  ~ 终止当前操
外贸网站建设广告/百度下载电脑版
我开始使用 sklearn.naive_bayes.GaussianNB 进行文本分类,并且获得了很好的初始结果 . 我想使用分类器返回的概率作为置
优化博客seo的建议(优化博客seo的建议有哪些)
大家好,今天小编关注到一个比较有意思的话题,就是关于优化博客seo的建议的问题,于是小编就整理了7个相关介绍优化博客seo的建