vlambda博客
学习文章列表

Nginx增加验证访问

SpringBoot -Nginx 增加用户名密码验证

1. 安装 htpasswd 工具
yum install httpd-tools -y
设置用户名和密码,并把用户名、密码保存到指定文件(当前默认指定在nginx的conf目录)中:
[root@CFJ-RCM conf]$  mkdir passwd
[root@CFJ-RCM conf]$  htpasswd -c passwd/passwd test
New password: 
Re-type new password: 
Adding password for user test

注: conf目录下passwd/passwd 是生成密码文件的路径。运行命令后,需要输入两次密码。输入成功后,会提示已经为test这个用户添加了密码。 查看下生成的密码文件的内容:

[root@CFJ-RCM conf]$ cat passwd/passwd 
test:$apr1$J5Sg0fQD$KDM3Oypj8Wf9477PHDIzA0

其中用户名就是test,分号后面就是密码(已经加过密 ,默认MD5加密)。


2. 修改 nginx 配置文件

 

找到 nginx 配置文件,因为我们要对整个站点开启验证,所以在配置文件中的第一个server修改如下: 

server {

        listen      22222;

        server_name  localhost;

        auth_basic "Please input password"; #验证提示信息

        auth_basic_user_file /usr/local/ngin8888/conf/passwd/passwd; # 密码文件

        #charset koi8-r;

        ........ #其余配置省略

}

指定nginx全路径命令重新启动 nginx,使配置生生效   

/usr/local/nginx/sbin/nginx  -s reload

以上都配置无误后,重新访问nginx,出现如下验证弹框就说明修改成功了。


3 SpringBoot,RestTemplate 加用户名密码访问

@Configuration 
public class RestTemplateConfig { 
//    @LoadBalanced     
@Bean     
public RestTemplate restTemplate() {         BasicCredentialsProvider credentialsProvider = new BasicCredentialsProvider();         credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials("test","test"))   CloseableHttpClient httpclient = HttpClients.custom()                 .setDefaultCredentialsProvider(credentialsProvider).useSystemProperties()                 .build();         
ClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(httpclient);         
RestTemplate restTemplate = new RestTemplate();         restTemplate.setRequestFactory(requestFactory);       
  return restTemplate;   
  } }
采用如下方式进行相关访问
restTemplate.getForObject("http://******:22222/consumer/user", String.class)
注:若是springcloud,引入了ribbon依赖,必须去除@LoadBalance注解,否则找不到url,负载均衡是以服务的名暴露的形式