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,负载均衡是以服务的名暴露的形式