反向代理

反向代理 JumpServer 要求说明

  • rdp 协议复制粘贴需要部署可信任的 ssl 证书
  • 通过 https 协议访问就能在 rdp 资产里面使用复制粘贴
  • 遵循 Mozilla SSL Configuration Generator 建议

1. nginx ssl 部署

请准备好 ssl 证书

  • 将证书放到 /opt/jumpserver/config/nginx/cert 里面
  1. vi /opt/jumpserver/config/config.txt
  1. ...
  2. ## Nginx 配置,这个 Nginx 是用来分发路径到不同的服务
  3. HTTP_PORT=8080
  4. HTTPS_PORT=8443
  5. SSH_PORT=2222
  6. ## LB 配置, 这个 Nginx 是 HA 时可以启动负载均衡到不同的主机
  7. USE_LB=1 # 启用 LB
  8. LB_HTTP_PORT=80 # 启用 80 端口(http)
  9. LB_HTTPS_PORT=443 # 启用 443 端口(https)
  10. LB_SSH_PORT=2223 # 启用 2223 端口(ssh)
  1. vi /opt/jumpserver/config/nginx/lb_http_server.conf
  1. # Todo: May be can auto discovery
  2. upstream http_server {
  3. sticky name=jms_route;
  4. server nginx:80;
  5. # server HOST2:8080; # 多节点
  6. }
  7. server {
  8. listen 80;
  9. server_name demo.jumpserver.org; # 自行修改成你自己的域名
  10. return 301 https://$server_name$request_uri;
  11. }
  12. server {
  13. listen 443 ssl;
  14. server_name demo.jumpserver.org; # 自行修改成你自己的域名
  15. server_tokens off;
  16. ssl_certificate cert/server.crt; # 修改成你自己的证书
  17. ssl_certificate_key cert/server.key; # 修改成你自己的证书
  18. ssl_session_timeout 1d;
  19. ssl_session_cache shared:MozSSL:10m;
  20. ssl_session_tickets off;
  21. ssl_protocols TLSv1.1 TLSv1.2;
  22. ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
  23. ssl_prefer_server_ciphers off;
  24. add_header Strict-Transport-Security "max-age=63072000" always;
  25. client_max_body_size 5000m; # 上传文件大小限制
  26. location / {
  27. proxy_pass http://http_server;
  28. proxy_buffering off;
  29. proxy_request_buffering off;
  30. proxy_http_version 1.1;
  31. proxy_set_header Host $host;
  32. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  33. proxy_set_header Upgrade $http_upgrade;
  34. proxy_set_header Connection $http_connection;
  35. proxy_ignore_client_abort on;
  36. proxy_connect_timeout 600;
  37. proxy_send_timeout 600;
  38. proxy_read_timeout 600;
  39. send_timeout 6000;
  40. }
  41. }
  1. ./jmsctl.sh restart

2. 多层 nginx 反向代理

  • 适合上层还有统一对外出口的反向代理服务器
  • 属于多层 nginx 反向代理
  • 每一层都需要设置 websocket 长连接
  1. vi /etc/nginx/conf.d/jumpserver.conf
  1. server {
  2. listen 80;
  3. server_name demo.jumpserver.org; # 自行修改成你的域名
  4. client_max_body_size 4096m; # 上传文件大小限制
  5. location / {
  6. # 这里的 ip 是后端 JumpServer nginx 的 ip
  7. proxy_pass http://192.168.244.144;
  8. proxy_http_version 1.1;
  9. proxy_buffering off;
  10. proxy_request_buffering off;
  11. proxy_set_header Upgrade $http_upgrade;
  12. proxy_set_header Connection "upgrade";
  13. proxy_set_header X-Real-IP $remote_addr;
  14. proxy_set_header Host $host;
  15. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  16. }
  17. }

推荐部署 ssl 使用更安全的 https 协议访问

  1. server {
  2. listen 80;
  3. server_name demo.jumpserver.org; # 自行修改成你的域名
  4. return 301 https://$server_name$request_uri;
  5. }
  6. server {
  7. listen 443 ssl;
  8. server_name demo.jumpserver.org; # 自行修改成你的域名
  9. ssl_certificate sslkey/1_jumpserver.org_bundle.crt; # 自行设置证书
  10. ssl_certificate_key sslkey/2_jumpserver.org_bundle.key; # 自行设置证书
  11. ssl_session_timeout 1d;
  12. ssl_session_cache shared:MozSSL:10m;
  13. ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
  14. ssl_prefer_server_ciphers off;
  15. ssl_protocols TLSv1.1 TLSv1.2;
  16. ssl_prefer_server_ciphers off;
  17. add_header Strict-Transport-Security "max-age=63072000" always;
  18. client_max_body_size 4096m; # 录像及文件上传大小限制
  19. location / {
  20. # 这里的 ip 是后端 JumpServer nginx 的 ip
  21. proxy_pass http://192.168.244.144;
  22. proxy_http_version 1.1;
  23. proxy_buffering off;
  24. proxy_request_buffering off;
  25. proxy_set_header Upgrade $http_upgrade;
  26. proxy_set_header Connection "upgrade";
  27. proxy_set_header X-Real-IP $remote_addr;
  28. proxy_set_header Host $host;
  29. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  30. }
  31. }

3. 其他 slb

  • 需要注意 websocket 长连接设置即可
  • 需要注意 session 问题