Nginx多层反代配置变量proxy_set_header过程记录

第一层代理:

(1)路径:

$ vim /data/soft/nginx/conf/vhost/xixi.conf

(2)内容:(注:此处变量名需中划线。)

server {

listen          80;

server_name     api.xxx.com api.yyyy.com api.cun.com;

access_log      /log/nginx/xiaojicdn.api.log main;

root            /data/www/pay/;

location /member {

proxy_intercept_errors  on;

proxy_set_header        Host                $host;

proxy_set_header        X-Real-IP           $remote_addr;

proxy_set_header        real-remote         $remote_addr;

proxy_set_header        X-Forwarded-For     $proxy_add_x_forwarded_for;

proxy_set_header        X-Forwarded-Proto   $scheme;

proxy_pass              http://member.srv;

}

location /discount {

proxy_intercept_errors  on;

proxy_set_header        Host                $host;

proxy_set_header        X-Real-IP           $remote_addr;

proxy_set_header        real-remote         $remote_addr;

proxy_set_header        X-Forwarded-For     $proxy_add_x_forwarded_for;

proxy_set_header        X-Forwarded-Proto   $scheme;

proxy_pass              http://discount.srv;

}

location /pay {

proxy_intercept_errors  on;

proxy_set_header        Host                $host;

proxy_set_header        X-Real-IP           $remote_addr;

proxy_set_header        real-remote         $remote_addr;

proxy_set_header        X-Forwarded-For     $proxy_add_x_forwarded_for;

proxy_set_header        X-Forwarded-Proto   $scheme;

proxy_pass              http://pay.srv;

}

location /agent {

proxy_intercept_errors  on;

proxy_set_header        Host                $host;

proxy_set_header        X-Real-IP           $remote_addr;

proxy_set_header        real-remote         $remote_addr;

proxy_set_header        X-Forwarded-For     $proxy_add_x_forwarded_for;

proxy_set_header        X-Forwarded-Proto   $scheme;

proxy_pass              http://agent.srv;

}

location =/pay.html {

expires 10s;

}

location =/ {

index   index.html payment.html;

}

error_page      404 /404.html;

error_page      500 502 503 504 /500.html;

location = /500.html {

default_type        application/json;

add_header          Content-Type 'application/json; charset=utf-8';

return 200          '{"status":2, "msg":"Server Error!"}';

}

location = /404.html {

default_type        application/json;

add_header          Content-Type 'application/json; charset=utf-8';

return 200          '{"status":2, "msg":"Request Uri Not Found!"}';

}

}

第二层代理:

(1)    路径:

$ vim /data/soft/nginx/conf/vhost/xixi.conf

(2)    内容:(注:此处变量获取需加http头,并且中划线要变为下划线。)

server {

listen          5675;

server_name     m.ttcn.com m.xxy.com api.xxx.com api.xxg.com api.ren.com;

access_log      /log/nginx/xiaoji.game.api.log main;

location /member {

proxy_intercept_errors  on;

proxy_set_header        Host                $host;

proxy_set_header        X-Real-IP           $http_real_remote;

proxy_set_header        X-Forwarded-For     $proxy_add_x_forwarded_for;

proxy_set_header        X-Forwarded-Proto   $scheme;

proxy_pass              http://member.srv;

}

location /discount {

proxy_intercept_errors  on;

proxy_set_header        Host                $host;

proxy_set_header        X-Real-IP           $http_real_remote;

proxy_set_header        X-Forwarded-For     $proxy_add_x_forwarded_for;

proxy_set_header        X-Forwarded-Proto   $scheme;

proxy_pass              http://discount.srv;

}

location /pay {

proxy_intercept_errors  on;

proxy_set_header        Host                $host;

proxy_set_header        X-Real-IP           $http_real_remote;

proxy_set_header        X-Forwarded-For     $proxy_add_x_forwarded_for;

proxy_set_header        X-Forwarded-Proto   $scheme;

proxy_pass              http://pay.srv;

}

location /agent {

proxy_intercept_errors  on;

proxy_set_header        Host                $host;

proxy_set_header        X-Real-IP           $http_real_remote;

proxy_set_header        X-Forwarded-For     $proxy_add_x_forwarded_for;

proxy_set_header        X-Forwarded-Proto   $scheme;

proxy_pass              http://agent.srv;

}

error_page      404 /404.html;

error_page      500 502 503 504 /500.html;

location = /500.html {

default_type        application/json;

add_header          Content-Type 'application/json; charset=utf-8';

return 200          '{"status":2, "msg":"Server Error!"}';

}

location = /404.html {

default_type        application/json;

add_header          Content-Type 'application/json; charset=utf-8';

return 200          '{"status":2, "msg":"Request Uri Not Found!"}';

}

}

(3)    路径:

$ vim /data/soft/nginx/conf/nginx.conf

(4)    内容:

user                            root;

worker_processes                8;

worker_rlimit_nofile            65535;

worker_cpu_affinity             auto;

daemon                          on;

error_log                       /log/nginx/error.log error;

pid                             /log/nginx/nginx.pid;

events {

use                             epoll;

worker_connections              65535;

}

http {

include                         mime.types;

include                         upstream.conf;

default_type                    text/plain;

### core

charset                         utf-8;

server_names_hash_bucket_size   128;

server_names_hash_max_size      512;

connection_pool_size            512;

server_tokens                   off;

chunked_transfer_encoding       on;

### tcp/socket/DDOS

sendfile                        on;

tcp_nopush                      on;

tcp_nodelay                     on;

client_body_timeout             15s;

client_header_timeout           15s;

send_timeout                    15s;

resolver_timeout                5s;

keepalive_requests              500;

keepalive_timeout               45s;

### open file

open_file_cache                 max=60000 inactive=60s;

open_file_cache_valid           60s;

open_file_cache_min_uses        1;

open_file_cache_errors          on;

### client buffer

client_header_buffer_size       4k;

large_client_header_buffers     8 16k;

ignore_invalid_headers          on;

client_body_buffer_size         16k;

client_max_body_size            10m;

client_body_temp_path           client_body_temp;

### response config

output_buffers                  4 32k;

### gzip

gzip                            on;

gzip_http_version               1.1;

gzip_disable                    "msie6";

gzip_comp_level                 5;

gzip_min_length                 100;

gzip_proxied                    any;

gzip_buffers                    16 4k;

gzip_vary                       on;

# gzip types

gzip_types                      text/plain;

gzip_types                      text/css;

gzip_types                      application/javascript;

gzip_types                      application/json;

gzip_types                      application/vnd.ms-fontobject;

gzip_types                      application/x-font-ttf;

gzip_types                      font/opentype;

gzip_types                      image/svg+xml;

gzip_types                      image/x-icon;

### proxy cache

proxy_connect_timeout           5;

proxy_read_timeout              30;

proxy_send_timeout              10;

proxy_http_version              1.1;

proxy_request_buffering         on;

proxy_buffering                 on;

proxy_buffer_size               4k;

proxy_buffers                   32 4k;

proxy_busy_buffers_size         16k;

proxy_max_temp_file_size        1024m;

proxy_temp_file_write_size      32k;

proxy_ignore_client_abort       off;

proxy_intercept_errors          on;

proxy_limit_rate                0;

proxy_pass_request_body         on;

proxy_pass_request_headers      on;

proxy_next_upstream             error timeout http_502;

#proxy_cache                  proxy_cache1;

proxy_cache                   off;

proxy_cache_key                $scheme$proxy_host$request_uri;

proxy_cache_lock_age            5s;

proxy_cache_lock_timeout        5s;

proxy_cache_methods            GET HEAD;

proxy_cache_min_uses            1;

proxy_cache_valid               200 302 1m;

proxy_cache_valid               301 1h;

proxy_cache_valid               any 1m;

proxy_cache_path    /log/nginx/proxy_cache levels=1:2 keys_zone=proxy_cache1:4096m inactive=60s max_size=4g;

proxy_temp_path                 /log/nginx/proxy_cache_tmp;

### connection limit

#limit_conn_zone                $binary_remote_addr zone=perip:100m;

#limit_conn_status              503;

#limit_conn_log_level           error;

#limit_conn perip               6;

### request limit

#limit_req_zone                 $binary_remote_addr zone=pereq:200m rate=2r/s;

#limit_req                      zone=pereq burst=5 nodelay;

#limit_req_log_level            error;

#limit_req_status               503;

### limit response

#limit_rate                      4k;

#limit_rate_after                500k;

### log format

log_format               main escape=json

'{"nx_localtime@timestamp":"$time_local",'

'"nx_host":"$server_addr",'

'"nx_client_ip":"$http_real_remote",'

'"nx_body_size":$body_bytes_sent,'

'"nx_request_time":$request_time,'

'"nx_scheme":"$scheme",'

'"nx_http_host":"$host",'

'"nx_request_method":"$request_method",'

'"nx_uri":"$uri",'

'"nx_status":$status,'

'"nx_referer":"$http_referer",'

'"nx_agent":"$http_user_agent",'

'"nx_upstream_host":"$upstream_addr",'

'"nx_upstream_time":$upstream_response_time,'

'"nx_upstream_response_length":$upstream_response_length,'

'"nx_upstream_status":$upstream_status,'

'"nx_upstream_connect_time":$upstream_connect_time}';

open_log_file_cache             max=1000 inactive=60s min_uses=1 valid=60s;

access_log                      off;

#access_log           /log/nginx/access.log main buffer=1M gzip=4 flush=5m;

log_not_found                   on;

### forbit ip access

server {

listen          80 default;

server_name     _;

return          404;

}

include vhost/*.conf;

}

(5)    查看日志内容:

则client_ip为真是的远程客户端访问ip,而不是第一层代理或者第一层代理和远程客户端两个IP了。

nginx多层反代配置变量proxy_set_header的更多相关文章

  1. nginx负载均衡(5种方式)、rewrite重写规则及多server反代配置梳理

    Nginx除了可以用作web服务器外,他还可以用来做高性能的反向代理服务器,它能提供稳定高效的负载均衡解决方案.nginx可以用轮询.IP哈希.URL哈希等方式调度后端服务器,同时也能提供健康检查功能 ...

  2. (转)nginx负载均衡(5种方式)、rewrite重写规则及多server反代配置梳理

    Nginx除了可以用作web服务器外,他还可以用来做高性能的反向代理服务器,它能提供稳定高效的负载均衡解决方案.nginx可以用轮询.IP哈希.URL哈希等方式调度后端服务器,同时也能提供健康检查功能 ...

  3. Nginx/Httpd反代tomcat配置

    在上一篇博客中,我们了解了tomcat的server.xml中各组件的用法和作用:其中对于tomcat连接器来说,它分三类,一类是http连接器,一类是https连接器,一类是ajp连接器:通常tom ...

  4. tomcat 反代配置

    tomcat反代可以基于nginx , http进行反代 反代服务器: 有两个网口  反代服务器一般有两块网卡一块处于外网,一块处于内网用于与后端服务器通信 tomcat 节点处于内网地址 1 tom ...

  5. 使用nginx做反代时遇到413 Request Entity Too Large的解决方法

    在使用nginx做反向代理的时候,被反代的系统在上传文件的时候遇到413 错误 :Request Entity Too Large 原因是nginx限制了上传文件的大小,在nginx中可以配置最大允许 ...

  6. nginx反代及后端web配置

    一.反代配置,proxy_pass指向的upstream需要在反代的nginx.conf中配置 server {access_log /home/nginx/front_access.log;erro ...

  7. Nginx反代MogileFS集群

    上一篇博文我们主要聊了下分布式文件系统MogileFS的组件以及部署使用,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13677279.html:今天我们主要 ...

  8. Nginx反代Mogilefs分布式储存示例

    一.分布式存储系统简介 随着信息技术不断的发展,给我们带来便利的同时,不断增加的数据量级.信息之间的连接关联越来越复杂.数据访问的并发量日益增加对I/O的要求越来越高.数据类型越来越复杂等难题也成为信 ...

  9. Nginx反代,后端一个IP绑定多个SSL证书,导致连接失败之解决方法:HTTPS和SNI扩展

    默认:SSL协议进行握手协商进行连接的时候,默认是不会发送主机名的,也就是是以IP的形式来进行https连接握手协商的,这就导致一个问题,当一台服务器上有多个虚拟主机使用同一个IP的时候, Nginx ...

随机推荐

  1. 用二叉树进行排序 x (从小到大)

    先输入n,表示拥有多少个数: 第二行输入1-n个数,然后开始排序 输出从小到大的排序. ----------------------------------------------代码~------- ...

  2. [BZOJ4817][SDOI2017]树点涂色:Link-Cut Tree+线段树

    分析 与[BZOJ3779]重组病毒唯一的区别是多了一个链上求实链段数的操作. 因为每条实链的颜色必然不相同且一条实链上不会有两个深度相同的点(好像算法的正确性和第二个条件没什么关系,算了算了),画图 ...

  3. SQL语句之-简单查询

       SQL 语句的语法顺序是: SELECT[DISTINCT] FROM WHERE GROUP BY HAVING UNION ORDER BY 一.查询SELECT 1.查询全部列:SELEC ...

  4. open 函数处理文件

    open函数用于文件处理 操作文件时,一般需要经历如下步骤:1 打开文件    2  操作文件 f =  open("文件名"     ,  '  打开文件方式'  ) 文件句柄 ...

  5. 【30分钟学完】canvas动画|游戏基础(2):从零开始画画

    前言 上篇主要是理论的概述,本篇会多些实践,来讲讲canvas的基础用法,并包含一些基础三角函数的应用,推荐没有canvas基础的朋友阅读,熟悉的朋友可以跳过. 本人能力有限,欢迎牛人共同讨论,批评指 ...

  6. Linux下修改mysql root密码

    1.修改MySQL的配置文件(默认为/etc/my.cnf),在[mysqld]下添加一行skip-grant-tables 2.保存配置文件后,重启MySQL服务 service mysqld re ...

  7. edusoho 支持同一账号多人同时登录

    文件: ./src/Topxia/WebBundle/Listener/UserLoginTokenListener.php 函数: public function onGetUserLoginLis ...

  8. ArrayBlockingQueue 源码分析

    ArrayBlockingQueue ArrayBlockingQueue 能解决什么问题?什么时候使用 ArrayBlockingQueue? 1)ArrayBlockingQueue 是底层由数组 ...

  9. LNMP 搭建 wordpress 站点 安装及配置过程

    0x00 环境 阿里云ECS云服务器 CPU:1核 内存:4G 操作系统:Centos 系统盘:100G 0x01 安装及配置 主要使用 nginx . php 和 mysql 注意:如果下面的设置不 ...

  10. java操作JSON字符串转换成对象的时候如何可以不建立实体类也能获取数据

    引入依赖 <dependency>    <groupId>com.alibaba</groupId>    <artifactId>fastjson& ...