nginx配置ssl证书,开启https安全访问

时间:2020-6-5

前言(背景):
最近,笔者想在个人网站上开启https访问。笔者是在腾讯云上注册的域名,在服务上使用的Nginx+Tomcat。但是,Tomcat项目所有的请求由Nginx进行代理转发。所以,经过资料查询,这里只需要进行Nginx的配置即可。

一、准备工作

1、假设Nginx+Tomcat都已配置完成。
2、笔者在腾讯云上申请免费版DVSSL证书(有效期一年)。
test1
这里采用自动DNS验证的方式最简便。等待大概10分钟左右申请成功。申请成功后,将证书下载到本地。证书的目录结构如下:
test2
在不同服务器下,使用不同的配置方式。这里使用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 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/

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Windows下配置NginxSSL证书,你可以按照以下步骤进行操作: 1. 获取SSL证书: 首先,你需要从证书颁发机构(CA)获取有效的SSL证书。这通常涉及到购买证书或使用免费的证书颁发机构(如Let's Encrypt)来获取证书。 2. 安装SSL证书: 将获取的SSL证书文件(通常包括.pem或.crt文件)保存到你的Windows计算机的某个位置,比如C:\ssl目录下。 3. 配置Nginx: 打开Nginx配置文件(通常是nginx.conf),找到与SSL相关的配置部分。 ``` server { listen 443 ssl; server_name yourdomain.com; ssl_certificate C:/ssl/your_certificate.crt; ssl_certificate_key C:/ssl/your_private_key.key; # 其他 SSL 配置... } ``` 在以上示例中,你需要将`yourdomain.com`替换为你的域名,并将`C:/ssl/your_certificate.crt`和`C:/ssl/your_private_key.key`替换为你保存证书的路径和文件名。 4. 重启Nginx: 保存配置文件后,重新启动Nginx服务器以使更改生效。 如果你使用的是Windows服务来运行Nginx,则可以通过以下命令重启服务: ``` net stop nginx net start nginx ``` 如果你是直接运行Nginx可执行文件,则需要关闭当前运行的Nginx进程,并重新启动Nginx。 现在,你的Nginx服务器应该已成功配置SSL证书,可以通过HTTPS访问你的网站了。请确保你的域名已正确解析到你的服务器IP地址,并且服务器的防火墙已打开相应的端口(通常是443)。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值