nginx作为反向代理修改服务端响应包的header头

nginx.conf配置如下(要求必须支持lua语言)

#user  nobody;
worker_processes  1;
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
#pid        logs/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    log_format  main  '$remote_addr-$remote_user [$time_local]'
                      '"$request" $status $body_bytes_sent' '"$http_referer" "$http_user_agent" $request_time req_body:"$request_body"' 
                      'resp_body:"$resp_body" resp_header:"$resp_header"';

    #access_log  logs/access.log  main;
	access_log  logs/host.access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;
	upstream oa_backend {
		server  172.17.12.1:8848;
		#server  192.168.0.80:80;
	}
	upstream oa1_backend {
		server  172.17.12.1:8080;
		#server  192.168.0.80:80;
	}
    server {
        listen       80;
        server_name  172.17.17.188;

        #charset koi8-r;

        location / {
			proxy_pass http://oa_backend;
			#下面是对响应头的location进行修改,也可以对其他头部信息修改
			set $resp_header "";
			header_filter_by_lua '
		        local h = ngx.resp.get_headers()
			    if (h["location"] ~= nil) and (ngx.status == 302 or ngx.status == 301) then
				ngx.header.location = string.gsub(h["location"],"http://%d+%.%d+%.%d+%.%d+:%d+/","http://172.17.17.188:81/")
			    end';
	 
			#lua_need_request_body on;
	        #配置日志中打印响应报文
			set $resp_body "";
			body_filter_by_lua '
				local resp_body = string.sub(ngx.arg[1], 1, 1000)
				ngx.ctx.buffered = (ngx.ctx.buffered or "") .. resp_body
				if ngx.arg[2] then
					ngx.var.resp_body = ngx.ctx.buffered
				end';
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

	}
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
反向代理和正向代理的配置步骤和配置详解如下: 反向代理配置步骤: 1. 安装和配置nginx服务器。 2. 在nginx的配置文件中,添加反向代理的配置块。 3. 在反向代理的配置块中,设置代理的目标服务器地址和端口。 4. 配置其他相关参数,如负载均衡算法、缓存设置等。 5. 保存配置文件并重新加载nginx服务器。 反向代理配置详解: 反向代理的配置主要括以下几个方面: 1. 反向代理的对象是服务端,客户端并不知道真正的服务端是谁。通过反向代理,客户端的请求会被转发到后端的真实服务器上,而客户端并不知道这个过程。 2. 在nginx的配置文件中,可以使用`proxy_pass`指令来设置代理的目标服务器地址和端口。例如,`proxy_pass http://backend_server;`表示将请求转发到名为`backend_server`的后端服务器。 3. 可以通过配置`proxy_set_header`指令来设置请求信息,如`Host`、`X-Real-IP`等。这些请求信息可以在后端服务器中使用。 4. 可以配置负载均衡算法,如轮询、IP哈希等,来实现请求的分发和负载均衡。 5. 可以配置缓存来提高性能,如设置缓存的有效期、缓存的大小等。 正向代理配置步骤: 1. 安装和配置nginx服务器。 2. 在nginx的配置文件中,添加正向代理的配置块。 3. 在正向代理的配置块中,设置代理的目标服务器地址和端口。 4. 配置其他相关参数,如缓存设置、访问控制等。 5. 保存配置文件并重新加载nginx服务器。 正向代理配置详解: 正向代理的配置与反向代理类似,主要括以下几个方面: 1. 正向代理的对象是客户端,客户端通过正向代理服务器来访问外部资源。 2. 在nginx的配置文件中,可以使用`proxy_pass`指令来设置代理的目标服务器地址和端口。例如,`proxy_pass http://external_server;`表示将客户端的请求转发到名为`external_server`的外部服务器。 3. 可以配置缓存来提高性能,如设置缓存的有效期、缓存的大小等。 4. 可以配置访问控制,如限制访问的IP地址、设置访问密码等。 以上是关于nginx反向代理和正向代理的配置步骤和配置详解。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* [Nginx安装配置详解 + 反向代理部署 + 搭建NFS共享存储](https://blog.csdn.net/m0_37714245/article/details/81809007)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [nginx反向代理原理及配置详解](https://blog.csdn.net/weixin_39830303/article/details/111780184)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Nginx 反向代理详解](https://blog.csdn.net/weixin_52622200/article/details/120979966)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值