Nginx-集群证书优化
upstream s_zjh {
server 172.16.1.7:80;
server 172.16.1.8:80;
}
# 监听https协议,如果有https请求,则代理至后端应用节点,走http协议,后端回传http协议,但代理回传给用户走https协议;
server {
listen 443 ssl;
server_name s.zjh.net;
ssl_certificate ssl_key/;
ssl_certificate_key ssl_key/;
location / {
proxy_pass http://s_zjh;
include proxy_params;
}
}
# 监听http协议,当有用户请求时则强制跳转至https协议
server {
listen 80;
server_name s.zjh.net;
return 302 https://$server_name$request_uri;
}
场景实践
1、模拟银行网站场景,用户访问网站主站,使用 http 协议提供访问,当用户点击登陆时,则网站会跳转至一个新的域名,并使用的是 Https 提供安全访问
#1. 主页展示 http://yh.oldxu.net(提供网页浏览)
#2. 模拟登陆 http://yh.oldxu.net/login(相当于点击了登陆按钮)
#3. 登陆页面 https://star.oldxu.net(提供安全登陆)
nginx配置
[root@web01 ~]# cat /etc/nginx/conf.d/star.zjh.net.conf
server {
listen 443 ssl;
server_name start.zjh.net;
ssl_certificate ssl_key/server.crt;
ssl_certificate_key ssl_key/server.key;
root /code/login;
location / {
index index.html;
}
}
[root@web01 ~]# mkdir /code/login -p
[root@web01 ~]# echo "login...https" > /code/login/index.html
#2.配置 http://yh.zjh.net
[root@web01 ~]# cat /etc/nginx/conf.d/yh.zjh.net.conf
server {
listen 80;
server_name yh.oldxu.net;
root /code;
location / {
index index.html;
}
location /login {
return 302 https://start.oldxu.net;
}
}
2、希望用户访问网站的所有Url走Https协议,但访问s.oldxu.net/abc时走Http协议
[root@lb01 conf.d]# cat proxy_s.zjh.net.conf
upstream webs {
server 172.16.1.7:80;
server 172.16.1.8:80;
}
server {
listen 443 ssl;
ssl_certificate ssl_key/server.crt;
ssl_certificate_key ssl_key/server.key;
server_name s.zjh.net;
location / {
proxy_pass http://webs;
include proxy_params;
}
}
server {
listen 80;
server_name s.oldxu.net;
if ($request_uri !~* "^[abc]*") {
return 302
}
location / {
proxy_pass http://webs;
include proxy_params;
}
}
3、开启OCSP,加速验证证书是否有效
# 配置Nginx
server {
listen 443 ssl;
server_name s.oldxu.net;
ssl_certificate
ssl/6152750_s.oldxu.net.pem;
ssl_certificate_key
ssl/6152750_s.oldxu.net.key;
#开启OCSP
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate
ssl/ocsp.pem;
root /code;
location / {
index index.html;
}
}
[root@db01 ~]# echo QUIT | openssl s_client -connect s.oldxu.net:443 -status 2>/dev/null | grep -A 17 "OCSP response"
OCSP response:
-----------------------------------------
OCSP Response Data:
OCSP Response Status: successful (0x0)
Response Type: Basic OCSP Response
Version: 1 (0x0)
Responder Id: 55744FB2724FF560BA50D1D7E6515C9A01871AD7
Produced At: Aug 20 02:33:01 2021 GMT
Responses:
Certificate ID:
Hash Algorithm: sha1
Issuer Name Hash: 978B4716E5B0F658BAE69DAB1689B8363AE3C3A6
Issuer Key Hash: 55744FB2724FF560BA50D1D7E6515C9A01871AD7
Serial Number: 086605F8BF56EA63D3E250FDD617DDF0
Cert Status: good
This Update: Aug 20 02:18:01 2021 GMT # 本次更新
Next Update: Aug 27 01:33:01 2021 GMT # 下次更新
若没开启则显示:
[root@db01 ~]# echo QUIT | openssl s_client -connect baidu.com:443 -status 2>/dev/null | grep -A 17 "OCSP response"
OCSP response: no response sent