最近实践中遇到了需要利用 nginx 进行反向代理服务器请求的需求,以前没怎么碰触过,因此花了1个多小时,快速阅览了一下nginx官网在反向代理服务中给出的基本定义:

说实话,官网给予的定义是精准的,但对于不是很了解 nginx 或者不太喜爱浪费脑细胞的童鞋来说,依旧还是云里雾里的将其定义为神仙级别的东西;

为此,今日闲来无事就把这一块进行一下总结和整理,方便自己以及有需要的人来参考:

由于本人的能力以及理解力的限制,以下的例子也只是完全结合 nginx官网中给予的定义来进行解释和整理,牛掰的大神可以完全忽略并藐视以后的所有内容了...

首先,若是要利用 nginx 做反向代理,就需要用到 ngx_stream_proxy_module 这个模块;

官网给出的解释:

The ngx_stream_proxy_module module (1.9.0) allows passing connections to another server over TCP and UNIX-domain sockets.

大概意思是说:这个 ngx_stream_proxy_module 允许在TCP和UNIX-domain Sockets之上连接到其它服务器。

那么也就是说, 只有用 ngx_stream_proxy_module 才能实现 nginx 反向代理了。

先看下面两个例子:

Example A: 

server {
    proxy_pass http:
    proxy_set_header   Cookie $http_cookie;    #
    proxy_set_header   X-Real-IP  $remote_addr;    #

}

示例C中的代码就是定义了,如何将真实header信息发送到被代理的服务器上,

#1  表示发送X-Forwarded-For(XFF, 通过HTTP代理或负载均衡方式连接到Web服务器的客户端最原始的IP地址的HTTP请求头字段。)

#2  表示发送产生的Cookie信息。

#3  表示发送客户端真实的IP地址。

注意:以上代码中的#以后的所有内容都表示被注视掉的内容。

当我们进行反向代理请求处理的时候,网站不想被一个客户端或者连接长时间的占用的时候,可以这样做:

Example D 

server {

    proxy_timeout 10s
}

以上这段代码表示 超时时间处理为 10秒。proxy_timeout 给予的参数还可以是 10m 表示十分钟。

以上这些配置足以完成一个简单的反向代理功能,还有更多的高级配置可以查阅官网的说明;

附上一个完整示例,该配置采用分布式进行WEB集群反向代理:

server {
    proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header   Cookie $http_cookie;
    proxy_set_header   X-Real-IP  $remote_addr;
    proxy_timeout 10s;
    proxy_pass http: weight= max_fails= fail_timeout=10s;
    server  weight= max_fails= fail_timeout=10s;
    server  weight= max_fails= fail_timeout=10s;
}

提示:upstream webserver 是一组不同的WEB服务器或者集群服务器,它是以轮播模式进行代理请求的。

关于 upstream 可以参看官网中 ngx_http_upstream_module 的定义;

Linux 下的 Nginx 反向代理配置.的更多相关文章

  1. 【netcore基础】CentOS 7.6.1810 搭建.net core 2.1 linux 运行环境 nginx反向代理 supervisor配置自启动

    之前写过一篇Ubuntu的环境搭建博客,感觉一些配置大同小异,这里重点记录下 nginx 作为静态 angular 项目文件服务器的配置 参考链接 [netcore基础]ubuntu 16.04 搭建 ...

  2. nginx反向代理配置及优化

    nginx反向代理配置及优化前言: 由于服务器apache抗不住目前的并发.加上前端squid配置后,问题依然无法解决.而页面程序大部分是动态.无法使用fastcgi来处理.因此想使用nginx做为反 ...

  3. nginx反向代理配置实例分享

    nginx反向代理配置一例. 配置内容如下: user www www; worker_processes 8; error_log /usr/local/webserver/nginx/logs/n ...

  4. (总结)Linux服务器上最简单的Nginx反向代理配置

    Nginx不但是一款高性能的Web服务器,也是高性能的反向代理服务器.下面简单说说Nginx的反向代理功能. 反向代理是什么? 反向代理指以代理服务器来接受Internet上的连接请求,然后将请求转发 ...

  5. nginx 反向代理配置(一)

    文章参考:https://blog.csdn.net/physicsdandan/article/details/45667357       什么是代理?       代理在普通生活中的意义就是本来 ...

  6. 利用DockerHub在Centos7.7环境下部署Nginx反向代理Gunicorn+Flask独立架构

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_165 上一篇文章:Docker在手,天下我有,在Win10系统下利用Docker部署Gunicorn+Flask打造独立镜像,是在 ...

  7. 使用python自动生成docker nginx反向代理配置

    由于在测试环境上用docker部署了多个应用,而且他们的端口有的相同,有的又不相同,数量也比较多,在使用jenkins发版本的时候,不好配置,于是想要写一个脚本,能在docker 容器创建.停止的时候 ...

  8. [nginx]Windows和Mac下,nginx反向代理服务器配置

    最近做项目,前端需要用到nginx反向代理来转发请求,总结了一下在Windows和Mac上的配置,以备查询. 一.Windows 修改nginx的配置文件,nginx.conf. 1)nginx.co ...

  9. nginx反向代理配置

    最近在项目中使用nginx反向代理,根据不同的请求路径,将请求分发到不同服务.下面的示例主要完成如下功能 /prod/路径的请求分发到prod服务 /test/路径的请求分发到test服务 创建文件夹 ...

随机推荐

  1. visual studio 2015离线版msdn下载和安装

    2014年11月13日,微软发布了Visual Studio 2015 Preview,但是Visual Studio 2015 的msdn该如何安装呢?下面脚本之家就为大家分享一篇visual st ...

  2. PL/SQL文档

    http://www.oracle.com/technetwork/database/features/plsql/index.html 注册表学习 http://itlab.idcquan.com/ ...

  3. C++程序设计实践指导1.10二维数组元素换位改写要求实现

    改写要求1:改写为以单链表和双向链表存储二维数组 改写要求2:添加函数SingleLinkProcess()实现互换单链表中最大结点和头结点位置,最小结点和尾结点位置 改写要求3:添加函数Double ...

  4. YII Framework学习教程-YII的Model-开发规范-路径别名-命名空间

    到这里,大概的YII开发已经基本可以,但是下面要将的所有课程,学完之后可以让你更爱YII.下面的教程是讲的MVC的M,model.数据,业务,代码的集中地区.所以开始之前,学学开发规范-路径别名-命名 ...

  5. app->h5同步身份

    最近半年主要是进行手机端的开发,主要是H5平台和APP内嵌H5营销活动的支持,相对遇到的兼容性问题比较少些,只是iscroll性能,点透,手机浏览器缓存,手机性能提高. 今天总结下,工作项目中的app ...

  6. zabbix之2安装编译/基本功能实现

    1.安装方式: rpm或者编译都可,rpm可以直接用yum安装. rpm安装的话,根据文件名进行选择即可. 编译的话,不同参数对应不同的组件. 编译安装zabbix:同时安装server和agent, ...

  7. deepin 2014 安装后 ,grub出错

    今天deepin2013一直出错,就想尝试下2014,so,果断下载安装,然后悲剧的又被坑了. 环境win7位于sda,deepin安装在sdb 安装完毕后,启动报错,找不到设备uuid 无奈之下,重 ...

  8. 网关协议学习:CGI、FastCGI、WSGI、uWSGI

    一直对这四者的概念和区别很模糊,现在就特意梳理一下它们的关系与区别. CGI CGI即通用网关接口(Common Gateway Interface),是外部应用程序(CGI程序)与Web服务器之间的 ...

  9. html css 笔记

    cursor其他取值 鼠标移入    auto          :标准光标    default        :标准箭头    pointer        :手形光标    wait       ...

  10. javacc

    http://www.cnblogs.com/Gavin_Liu/archive/2009/03/07/1405029.html https://javacc.java.net/ http://www ...