Nginx配置Https
1、生成证书
用java jdk自带的keytool生成keystore密钥文件,更多信息
keytool -genkey -alias casserver -keyalg RSA -keysize 1024 -keypass lumingclient -validity 365 -keystore d:\sso\casserver.keystore -storepass lumingclient
截图中需要输入的姓名和上面hosts文件中配置的一致(也可以是主机名) ;
keypass 和 storepass 两个密码要一致,否则下面tomcat 配置https 访问失败。
2、导出私钥(需要安装openssl)
包括pem证书和key密钥。
1、用keytool将keystore文件转换为PKCS12 文件
keytool -importkeystore -srckeystore d:/sso/casserver.keystore -destkeystore d:/sso/newkeystore.p12 -deststoretype PKCS12
如果需要查看新的密钥中的列表内容,可以用
keytool -deststoretype PKCS12 -keystore d:/sso/newkeystore.p12 -list
进行查看。
2、用openssl生成pem公钥文件
openssl pkcs12 -nokeys -in d:/sso/newkeystore.p12 -out certfile.pem
3、用openssl生成key私钥文件
openssl pkcs12 -nocerts -nodes -in d:/sso/newkeystore.p12 -out keyfile.key
3、配置nginx密钥
找到nginx主配置文件,然后依次按如下步奏操作:
找到https位置
放开https注释– “#”为注释
默认https端口为443
为nginx配置密钥和私钥(即上述步骤生成的pem和key文件)
ssl_certificate D:/sso/casserver.pem;
ssl_certificate_key D:/sso/casserver.key;
4、配置访问规则
配置nginx的访问规则即可。
https配置相关内容如下:
server {
listen 443 ssl;
server_name 127.0.0.1;
ssl_certificate D:/sso/casserver.pem;
ssl_certificate_key D:/sso/casserver.key;
#ssl_session_cache shared:SSL:1m;
#ssl_session_timeout 5m;
#ssl_ciphers HIGH:!aNULL:!MD5;
#ssl_prefer_server_ciphers on;
location / {
charset UTF-8;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass https://127.0.0.1:8443/$uri$is_args$args;
}
}
5、配置日志
if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})") {
set $year $1;
set $month $2;
set $day $3;
}
access_log /var/log/nginx/$year-$month-$day-access.log;
6、负载均衡
简单的http负载均衡
upstream myslb {
server 127.0.0.1:8080;
server 127.0.0.1:8081;
}
server {
listen 8000;
server_name 127.0.0.1;
location / {
add_header 'Access-Control-Allow-Origin' *;
charset UTF-8;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://myslb/$uri$is_args$args;
}
}
https的负载均衡
upstream myhttpsslb {
server 127.0.0.1:8443;
server 127.0.0.1:8444;
}
server {
listen 8883 ssl;
server_name 127.0.0.1;
ssl_certificate /home/ubuntu/keystore/prod_certfile.pem;
ssl_certificate_key /home/ubuntu/keystore/prod_keyfile.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
root html;
index index.html index.htm;
location /{
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass https://myhttpsslb$uri$is_args$args;
}
}
完整配置
upstream myhttpsslb {
server 127.0.0.1:8443;
server 127.0.0.1:8444;
}
server {
listen 8883 ssl;
server_name 127.0.0.1;
ssl_certificate /home/ubuntu/keystore/prod_certfile.pem;
ssl_certificate_key /home/ubuntu/keystore/prod_keyfile.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
root html;
index index.html index.htm;
if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})") {
set $year $1;
set $month $2;
set $day $3;
}
access_log /var/log/nginx/$year-$month-$day-access.log;
location /{
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass https://myhttpsslb$uri$is_args$args;
}
}
7、访问黑名单
在conf.d目录下,创建 blockips.conf文件,并加入黑名单IP,如下所示
查看cat blockips.conf
deny 210.14.155.215;
deny 61.4.185.194;
deny 54.223.167.94;