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. [ZJU 1003] Crashing Balloon

    ZOJ Problem Set - 1003 Crashing Balloon Time Limit: 2 Seconds      Memory Limit: 65536 KB On every J ...

  2. CF1012F Passports

    http://codeforces.com/problemset/problem/1012/F 题解 考虑\(p=1\)的情况. 我们可以把题意理解成平面上有一些线段,你需要给每条线段分配一个长度给定 ...

  3. Linux驱动开发4——并发和竞态

    Linux系统处于一个高并发的运行环境,不管是系统调用还是中断都要求可重入,但是有一些系统资源处于临界区,因此,必须保证临界区资源访问的原子性. 对于临界区资源被占用时,发起访问的进程,有三种处理方法 ...

  4. ORACLE 临时表空间管理

     临时表空间和临时段 临时表空间用于存放排序.临时表等数据,其信息不需要REDO,因此临时表的DML操作往往比普通表产生的REDO少很多.临时表数据变化不产生REDO,UNDO数据变化产生REDO.临 ...

  5. Retrofit RestAdapter 配置说明

    RestAdapter.Builder builder = new RestAdapter.Builder();                    builder.setEndpoint(ip地址 ...

  6. MongoDB学习【三】—MongoDB数据库增删改查

    一.数据库的增删查 # 增加 use db # 有则切换,无则新 增 # 查看 show dbs # 查看所有数据库 db # 查看当前库 # 删除 db.dropDatabase() # 不会就用h ...

  7. SoapUI常用的参数化方法

    本篇文章来讲一下SoapUI在使用中常用的参数化方法字段参数化和使用DataSource调用Excel中的 数据给接口参数化,其中DataSource功能SoapUI开源版没有,大家可以使用破解版, ...

  8. pycharm社区版安装及遇到的问题

    1. 在官网上下载pycharm社区版安装包. 2. 按照该教程进行安装: https://jingyan.baidu.com/article/f00622286e92f4fbd2f0c855.htm ...

  9. 应用安全 - 渗透测试 - .net网站

    注入 注入 单引号检测 - 多数使用MSSQL数据库 常规注入绕过 "or''=' | 'or''=' 'or'='or' | 'or'='or'" 上传 加图片头GIF89A

  10. vue打包详情

    说明 本文代码中的配置基于vue-cli2 需求 在实际开发中我们可能有测试环境一套请求API 和 正式环境一套API,尤其是两个环境的域名不同时,就需要我们分环境打不同配置的包 了解 webpack ...