我正在尝试实现一个NGINX反向代理服务器,该服务器从客户端应用程序接受HTTPS命令,并将其中继到下游服务器,再次使用HTTPS。客户端应用使用的用户/密码必须与下游服务器接受的用户/密码不同。
客户端应用程序“用户”在标头{'x-client-id':'bozo'}中传递到反向代理服务器。 FWIW,下游服务器不需要标头。
用于与反向代理服务器和下游服务器进行通信的用户ID相同,并且用于与下游服务器进行通信的密码存储在反向代理服务器上的MySQL数据库中,并可以通过LUA脚本进行访问。
我正在努力与下游服务器通信时如何替换用户名/密码。
关于NGINX的服务器定义,我已经走了这么远:
'''
server {
listen 8445 ssl;
server_name api.somemagicland.com;
ssl_certificate /home/proxyadmin/api.somemagicland.com.bundle.crt;
ssl_certificate_key /home/proxyadmin/api.somemagicland.com.key;
#charset koi8-r;
#access_log logs/host.access.log main;
proxy_set_header Authorization "";
location /shim_upstream {
rewrite /shim_upstream/(.*) /$1 break;
#######################################
# this has to be updated with the IP Address of the Backend Server
# set this if you want to strip original request headers and add your custom Headers
proxy_pass_request_headers off;
proxy_pass https://myportal.somewhere.com:8445;
proxy_redirect off;
# proxy_set_header Host $host;
}
作为可接受但不太理想的替代方案,可以使用静态定义的用户/密码与下游服务器进行通信。
对此表示衷心的感谢!