NGINX转发URL时将+转换为%20的问题求助
NGINX转发URL时将+转换为%20的问题求助
大家好,我配置了一段NGINX规则,用正则来转换URL,这部分逻辑本身是正常工作的。但现在遇到个问题:当转发请求到新的Atlassian实例时,原URL里的+符号会被转换成%20,虽然从应用层面来说这种转换有它的道理,但这并不是我期望的行为。
以下是我目前的NGINX配置代码:
user nginx; worker_processes auto; worker_rlimit_nofile 8192; pid /run/nginx/nginx.pid; events { worker_connections 4000; } error_log /var/log/nginx/error.log error; http { server { listen 443 ssl default_server; server_name localhost; ssl_certificate /etc/nginx/certs/REDACTED.cert; ssl_certificate_key /etc/nginx/certs/REDACTED.key; location / { set $unencoded_args on; set $substitute_url ''; if ($request_uri ~* "https:\/\/(confluence|public)\.REDACTED\.nl\/display\/(.*)\/(.*)") { set $unencoded_arg_substitute_url 'https://REDACTED.atlassian.net/wiki/pages/viewpage.action?spaceKey=$2&title=$3'; rewrite ^ $unencoded_arg_substitute_url redirect; } if ($request_uri ~* "https:\/\/(confluence|public)\.REDACTED\.nl\/pages\/viewpage.action\?spaceKey=(.*)&title=(.*)") { set $unencoded_arg_substitute_url 'https://REDACTED.atlassian.net/wiki/pages/viewpage.action?spaceKey=$2&title=$3'; set $substitute_url $unencoded_arg_substitute_url; rewrite ^ $substitute_url permanent; } if ($request_uri ~* "https:\/\/confluence\.REDACTED\.nl\/pages\/viewpage.action\?pageId=(.*)") { set $unencoded_arg_substitute_url 'https://REDACTED.atlassian.net/l/cp/VjEHCLZv'; rewrite ^ $unencoded_arg_substitute_url redirect; proxy_pass $unencoded_arg_substitute_url; } if ($substitute_url = '') { set $unencoded_arg_substitute_url 'https://REDACTED.atlassian.net/wiki'; rewrite ^ $unencoded_arg_substitute_url redirect; } proxy_pass $unencoded_arg_substitute_url; proxy_set_header Host REDACTED.atlassian.net/wiki; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_next_upstream error timeout http_500 http_502 http_503 http_504; root /var/www; index index.html; error_page 502 503 504 fallback.html; error_page 404 not_found.html; error_page 401 unauthorized.html; } } }
麻烦各位帮忙看看,怎么调整配置才能避免+被转成%20呢?
备注:内容来源于stack exchange,提问作者Joeri_Damian




