前言(背景):
最近,笔者想在个人网站上开启https访问。笔者是在腾讯云上注册的域名,在服务上使用的Nginx+Tomcat。但是,Tomcat项目所有的请求由Nginx进行代理转发。所以,经过资料查询,这里只需要进行Nginx的配置即可。
一、准备工作
1、假设Nginx+Tomcat都已配置完成。 2、笔者在腾讯云上申请免费版DVSSL证书(有效期一年)。 这里采用自动DNS验证的方式最简便。等待大概10分钟左右申请成功。申请成功后,将证书下载到本地。证书的目录结构如下: 在不同服务器下,使用不同的配置方式。这里使用WinSCP将Nginx文件夹中的两个文件传到服务器的Nginx配置文件中:
- 1_www.zksky.top_bundle.crt (证书文件)
- 2_www.zksky.top.key (私钥文件)
二、Nginx配置文件
#监听443端口,配置ssl
server {
listen 443 ssl;
#填写绑定证书的域名
server_name www.zksky.top;
#网站主页路径
root /var/www/zkPage;
index index.html index.htm;
#证书文件名称
ssl_certificate /usr/local/nginx/conf/myConf/1_www.zksky.top_bundle.crt;
#私钥文件名称
ssl_certificate_key /usr/local/nginx/conf/myConf/2_www.zksky.top.key;
#指定客户端可以重用会话参数的时间
ssl_session_timeout 5m;
#配置加密套件。为空字符串时,由openssl自行选择加密算法
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
#为遵循安全规范,配置协议不支持SSLv3、SSLv2 、TLSv1
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
#依赖SSLv3和TLSv1协议的服务器密码将优先于客户端密码
ssl_prefer_server_ciphers on;
add_header Strict-Transport-Security "max-age=31536000";
}
#转发http请求到https
server {
listen 80;
listen [::]:80;
charset utf-8;
server_name www.zksky.top;
return 301 https://$host$request_uri;
}
重启Nginx就已经开启https访问了!
三、Nginx反向代理,配置https
server {
listen 443 ssl;
server_name blog.zksky.top;
ssl_certificate /usr/local/nginx/conf/myConf/1_blog.zksky.top_bundle.crt;
ssl_certificate_key /usr/local/nginx/conf/myConf/2_blog.zksky.top.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://localhost:8081/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 300;
proxy_send_timeout 300;
proxy_read_timeout 300;
}
}
将域名blog.zksky.top
的请求转发到8081端口。开启https请求成功!
注意:
经过nginx代理转发到Tomcat的请求,使用request.getRemoteAddr ()
只能获得本地ip,经过以上配置使用request.getHeader("x-forwarded-for")
可以获得远程客户端ip。
四、后记:
我的个人网站主页: https://www.zksky.top/
我的博客网站主页: https://blog.zksky.top/
注:
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名,转载请标明出处。