You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@apisix.apache.org by mo...@apache.org on 2023/04/14 07:42:32 UTC
[apisix] branch master updated: refactor: remove if statement in nginx.conf (#8275)
This is an automated email from the ASF dual-hosted git repository.
monkeydluffy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/apisix.git
The following commit(s) were added to refs/heads/master by this push:
new 10825bbb0 refactor: remove if statement in nginx.conf (#8275)
10825bbb0 is described below
commit 10825bbb068ea3b19c7e8468f67afc871d424fb1
Author: Liu Wei <mo...@gmail.com>
AuthorDate: Fri Apr 14 15:42:23 2023 +0800
refactor: remove if statement in nginx.conf (#8275)
---
apisix/cli/ngx_tpl.lua | 7 +--
apisix/core/ctx.lua | 6 +--
benchmark/fake-apisix/conf/nginx.conf | 16 +-----
t/APISIX.pm | 7 +--
t/plugin/ip-restriction.t | 2 +-
t/plugin/proxy-rewrite3.t | 96 +++++++++++++++++++++++++++++++++++
6 files changed, 103 insertions(+), 31 deletions(-)
diff --git a/apisix/cli/ngx_tpl.lua b/apisix/cli/ngx_tpl.lua
index 142d92298..6a9766457 100644
--- a/apisix/cli/ngx_tpl.lua
+++ b/apisix/cli/ngx_tpl.lua
@@ -703,16 +703,11 @@ http {
### the following x-forwarded-* headers is to send to upstream server
- set $var_x_forwarded_for $remote_addr;
set $var_x_forwarded_proto $scheme;
set $var_x_forwarded_host $host;
set $var_x_forwarded_port $server_port;
- if ($http_x_forwarded_for != "") {
- set $var_x_forwarded_for "${http_x_forwarded_for}, ${realip_remote_addr}";
- }
-
- proxy_set_header X-Forwarded-For $var_x_forwarded_for;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $var_x_forwarded_proto;
proxy_set_header X-Forwarded-Host $var_x_forwarded_host;
proxy_set_header X-Forwarded-Port $var_x_forwarded_port;
diff --git a/apisix/core/ctx.lua b/apisix/core/ctx.lua
index 47b6bef85..d723f17cb 100644
--- a/apisix/core/ctx.lua
+++ b/apisix/core/ctx.lua
@@ -198,9 +198,9 @@ do
upstream_cache_key = true,
upstream_cache_bypass = true,
- var_x_forwarded_proto = true,
- var_x_forwarded_port = true,
- var_x_forwarded_host = true,
+ var_x_forwarded_proto = true,
+ var_x_forwarded_port = true,
+ var_x_forwarded_host = true,
}
-- sort in alphabetical
diff --git a/benchmark/fake-apisix/conf/nginx.conf b/benchmark/fake-apisix/conf/nginx.conf
index 9ae60d248..f35131cbe 100644
--- a/benchmark/fake-apisix/conf/nginx.conf
+++ b/benchmark/fake-apisix/conf/nginx.conf
@@ -103,25 +103,11 @@ http {
### the following x-forwarded-* headers is to send to upstream server
- set $var_x_forwarded_for $remote_addr;
set $var_x_forwarded_proto $scheme;
set $var_x_forwarded_host $host;
set $var_x_forwarded_port $server_port;
- if ($http_x_forwarded_for != "") {
- set $var_x_forwarded_for "${http_x_forwarded_for}, ${realip_remote_addr}";
- }
- if ($http_x_forwarded_proto != "") {
- set $var_x_forwarded_proto $http_x_forwarded_proto;
- }
- if ($http_x_forwarded_host != "") {
- set $var_x_forwarded_host $http_x_forwarded_host;
- }
- if ($http_x_forwarded_port != "") {
- set $var_x_forwarded_port $http_x_forwarded_port;
- }
-
- proxy_set_header X-Forwarded-For $var_x_forwarded_for;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $var_x_forwarded_proto;
proxy_set_header X-Forwarded-Host $var_x_forwarded_host;
proxy_set_header X-Forwarded-Port $var_x_forwarded_port;
diff --git a/t/APISIX.pm b/t/APISIX.pm
index e0ad70427..b0c361183 100644
--- a/t/APISIX.pm
+++ b/t/APISIX.pm
@@ -776,16 +776,11 @@ _EOC_
### the following x-forwarded-* headers is to send to upstream server
- set \$var_x_forwarded_for \$remote_addr;
set \$var_x_forwarded_proto \$scheme;
set \$var_x_forwarded_host \$host;
set \$var_x_forwarded_port \$server_port;
- if (\$http_x_forwarded_for != "") {
- set \$var_x_forwarded_for "\${http_x_forwarded_for}, \${realip_remote_addr}";
- }
-
- proxy_set_header X-Forwarded-For \$var_x_forwarded_for;
+ proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto \$var_x_forwarded_proto;
proxy_set_header X-Forwarded-Host \$var_x_forwarded_host;
proxy_set_header X-Forwarded-Port \$var_x_forwarded_port;
diff --git a/t/plugin/ip-restriction.t b/t/plugin/ip-restriction.t
index d3f4f23b7..11bcb52e5 100644
--- a/t/plugin/ip-restriction.t
+++ b/t/plugin/ip-restriction.t
@@ -625,7 +625,7 @@ GET /hello
=== TEST 29: set whitelist and user-defined message
--- config
- location /t {
+location /t {
content_by_lua_block {
local t = require("lib.test_admin").test
local code, body = t('/apisix/admin/routes/1',
diff --git a/t/plugin/proxy-rewrite3.t b/t/plugin/proxy-rewrite3.t
index 45bcd6f5c..33d751bfd 100644
--- a/t/plugin/proxy-rewrite3.t
+++ b/t/plugin/proxy-rewrite3.t
@@ -771,3 +771,99 @@ passed
GET /test/plugin/proxy/rewrite HTTP/1.1
--- response_headers
X-Request-ID: test1///test2
+
+
+
+=== TEST 33: set route (test if X-Forwarded-Port can be set before proxy)
+--- config
+ location /t {
+ content_by_lua_block {
+ local t = require("lib.test_admin").test
+ local code, body = t('/apisix/admin/routes/1',
+ ngx.HTTP_PUT,
+ [[{
+ "methods": ["GET"],
+ "plugins": {
+ "proxy-rewrite": {
+ "headers": {
+ "X-Forwarded-Port": "9882"
+ }
+ }
+ },
+ "upstream": {
+ "nodes": {
+ "127.0.0.1:1980": 1
+ },
+ "type": "roundrobin"
+ },
+ "uri": "/echo"
+ }]]
+ )
+ if code >= 300 then
+ ngx.status = code
+ end
+ ngx.say(body)
+ }
+ }
+--- request
+GET /t
+--- response_body
+passed
+
+
+
+=== TEST 34: test if X-Forwarded-Port can be set before proxy
+--- request
+GET /echo HTTP/1.1
+--- more_headers
+X-Forwarded-Port: 9881
+--- response_headers
+X-Forwarded-Port: 9882
+
+
+
+=== TEST 35: set route (test if X-Forwarded-For can be set before proxy)
+--- config
+ location /t {
+ content_by_lua_block {
+ local t = require("lib.test_admin").test
+ local code, body = t('/apisix/admin/routes/1',
+ ngx.HTTP_PUT,
+ [[{
+ "methods": ["GET"],
+ "plugins": {
+ "proxy-rewrite": {
+ "headers": {
+ "X-Forwarded-For": "22.22.22.22"
+ }
+ }
+ },
+ "upstream": {
+ "nodes": {
+ "127.0.0.1:1980": 1
+ },
+ "type": "roundrobin"
+ },
+ "uri": "/echo"
+ }]]
+ )
+ if code >= 300 then
+ ngx.status = code
+ end
+ ngx.say(body)
+ }
+ }
+--- request
+GET /t
+--- response_body
+passed
+
+
+
+=== TEST 36: test if X-Forwarded-For can be set before proxy
+--- request
+GET /echo HTTP/1.1
+--- more_headers
+X-Forwarded-For: 11.11.11.11
+--- response_headers
+X-Forwarded-For: 22.22.22.22, 127.0.0.1