需求

如题,Swagger-UI页面需要加权限验证拦截,但又不想搞太麻烦,于事就决定用Nginx的指定URL权限验证,来实现拦截swagger-ui.html

实现

以Centos为例

  1. # 安装工具
  2. yum -y install httpd
  3. # 创建密码
  4. htpasswd -c /etc/nginx/passwd admin
  5. # 然后根据提示输入两次密码
  6. New password:
  7. Re-type new password:
  8. # 结束后在/etc/nginx/目录下就多了一个passwd文件

修改配置文件
/etc/nginx/nginx.conf

  1. # 修改Nginx配置 加上这一段即可
  2. location /swagger-ui.html {
  3. auth_basic "There place don't have three hundred silver in here.";
  4. auth_basic_user_file /etc/nginx/passwd;
  5. # 下面这段根据自己情况配置
  6. proxy_pass http://localhost:8080/service/swagger-ui.html;
  7. proxy_set_header Host $host;
  8. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  9. proxy_set_header X-Forwarded-Proto https;
  10. proxy_connect_timeout 30;
  11. proxy_read_timeout 30;
  12. proxy_send_timeout 30;
  13. access_log off;
  14. break;
  15. }
  16. # 要是觉得还不保险,再加一个IP限制
  17. location /swagger-ui.html {
  18. # 代表IP4位全部对上才允许访问
  19. allow 111.111.111.111;
  20. # 代表IP前两位能对上就允许访问(用于某些运营商公网IP后两位经常变更)
  21. allow 111.111.0.0/16;
  22. deny all;
  23. ......
  24. }

END