nginx多层反代配置变量proxy_set_header
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的更多相关文章
- nginx负载均衡(5种方式)、rewrite重写规则及多server反代配置梳理
Nginx除了可以用作web服务器外,他还可以用来做高性能的反向代理服务器,它能提供稳定高效的负载均衡解决方案.nginx可以用轮询.IP哈希.URL哈希等方式调度后端服务器,同时也能提供健康检查功能 ...
- (转)nginx负载均衡(5种方式)、rewrite重写规则及多server反代配置梳理
Nginx除了可以用作web服务器外,他还可以用来做高性能的反向代理服务器,它能提供稳定高效的负载均衡解决方案.nginx可以用轮询.IP哈希.URL哈希等方式调度后端服务器,同时也能提供健康检查功能 ...
- Nginx/Httpd反代tomcat配置
在上一篇博客中,我们了解了tomcat的server.xml中各组件的用法和作用:其中对于tomcat连接器来说,它分三类,一类是http连接器,一类是https连接器,一类是ajp连接器:通常tom ...
- tomcat 反代配置
tomcat反代可以基于nginx , http进行反代 反代服务器: 有两个网口 反代服务器一般有两块网卡一块处于外网,一块处于内网用于与后端服务器通信 tomcat 节点处于内网地址 1 tom ...
- 使用nginx做反代时遇到413 Request Entity Too Large的解决方法
在使用nginx做反向代理的时候,被反代的系统在上传文件的时候遇到413 错误 :Request Entity Too Large 原因是nginx限制了上传文件的大小,在nginx中可以配置最大允许 ...
- nginx反代及后端web配置
一.反代配置,proxy_pass指向的upstream需要在反代的nginx.conf中配置 server {access_log /home/nginx/front_access.log;erro ...
- Nginx反代MogileFS集群
上一篇博文我们主要聊了下分布式文件系统MogileFS的组件以及部署使用,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13677279.html:今天我们主要 ...
- Nginx反代Mogilefs分布式储存示例
一.分布式存储系统简介 随着信息技术不断的发展,给我们带来便利的同时,不断增加的数据量级.信息之间的连接关联越来越复杂.数据访问的并发量日益增加对I/O的要求越来越高.数据类型越来越复杂等难题也成为信 ...
- Nginx反代,后端一个IP绑定多个SSL证书,导致连接失败之解决方法:HTTPS和SNI扩展
默认:SSL协议进行握手协商进行连接的时候,默认是不会发送主机名的,也就是是以IP的形式来进行https连接握手协商的,这就导致一个问题,当一台服务器上有多个虚拟主机使用同一个IP的时候, Nginx ...
随机推荐
- codevs 4064 组合 x
很久之前发过啦~不过删掉了...再发一下 4064 组合 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description 组合就 ...
- Count on a tree(树上路径第K小)
题目链接:https://www.spoj.com/problems/COT/en/ 题意:求树上A,B两点路径上第K小的数 思路:主席树实际上是维护的一个前缀和,而前缀和不一定要出现在一个线性表上. ...
- LR之流程
一.新建事务 如何估算一个业务流程呢?一个业务流程的持续时间:登录,预定机票等等的花费时间,通常是几个步骤构成的,所以在LR中需要标记事物,作为评测业务的时间. 1.打开Basic_Tutorial脚 ...
- [BZOJ4552]:[Tjoi2016&Heoi2016]排序(桶排序)
题目传送门 题目描述 在2016年,佳媛姐姐喜欢上了数字序列. 因而她经常研究关于序列的一些奇奇怪怪的问题,现在她在研究一个难题,需要你来帮助她. 这个难题是这样子的:给出一个1到n的全排列,现在对这 ...
- jq和js用法:入口写法
jq和js入口写法demo: <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...
- IBM Security App Scan Standard 工具的使用
1.AppScan是什么? AppScan是IBM的一款web安全扫描工具,可以利用爬虫技术进行网站安全渗透测试,根据网站入口自动对网页链接进行安全扫描,扫描之后会提供扫描报告和修复建议等. AppS ...
- 迭代器遍历列表 构造方法 constructor ArrayList Vector LinkedList Array List 时间复杂度
package priceton; import java.io.IOException; import java.util.concurrent.CyclicBarrier; import java ...
- history历史记录在AJAX下出现异常跳转 [解决]
事情是这样的,在一个历史记录指针应该在[1, 2, 3, 4]的[3]位置的情况下,出现了历史记录指针指向了[4]的情况,而且是在正常后退事件发生之后,(据我所知)没有代码操作的情况发生的. 这是一个 ...
- Delphi XE2 之 FireMonkey 入门(16) - 滤镜: 实例测试
窗体上需要 TImage.TOpenDialog 和六个按钮. unit Unit1; interface uses System.SysUtils, System.Types, System.U ...
- 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_09 序列化流_5_InvalidClassException异常_原理
序列化一遍 反序列化再来一遍 age的修饰符改为public 直接反序列化就会抛出异常 序列化的时候会给Person.class添加序列号,serialVersionUID,.反序列化需要对比这个se ...