我在nginx反向代理后面运行闪亮的服务器,以将SSL层添加到闪亮的应用程序中。所有有光泽的用户都已颁发X509证书来保护访问。我想将nginx所使用的X509证书的指纹作为参数传递给闪亮的应用程序,以识别确切连接的人员,从而基于此区分应用程序的行为。具体来说,我将仅显示该用户的相关数据。我通过在从/重定向到/ app位置的过程中添加证书指纹来使其与下面的nginx配置一起使用,这从安全角度来看并不理想。 是否有更好的方法来添加指纹以请求参数?
server {
listen 8789 ssl;
server_name my.server.name;
ssl_certificate /etc/nginx/ssl/my.server.crt;
ssl_certificate_key /etc/nginx/ssl/my.server.key;
ssl on;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
ssl_prefer_server_ciphers on;
ssl_client_certificate /etc/nginx/ssl/ca.shiny.crt;
ssl_verify_client on;
ssl_crl /etc/nginx/ssl/db/shiny/crl.shiny.pem;
access_log /var/log/nginx/shiny.access.log;
location /app/ {
proxy_set_header Host $host:8789;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_pass http://localhost:3838;
proxy_read_timeout 90;
proxy_redirect http:// https://;
}
location / {
set $token '?crt=';
return 302 https://my.server.name:8789/app/$token$ssl_client_fingerprint;
}
}