nginx是一个开源的HTTP服务器,通过使用异步、事件驱动的方法,能够更好的处理高负载的请求。而OpenSSL是一个强大的开源加密库,可以提供安全的加密传输。
一、概述
nginxopenssl是nginx选择OpenSSL作为加密库的一种方式,可以将传输数据加密,增加安全性。使用nginxnginx同时安装了OpenSSL,并且已经开启了SSL模块。
在配置之前,需要确保服务器上已经完成了以下两个步骤:
1、 安装nginx
sudo apt-get update
sudo apt-get install nginx
2、 安装OpenSSL
sudo apt-get install openssl
二、配置
1、生成SSL证书
首先需要生成SSL证书,可以使用OpenSSL来创建自签名的证书。
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/nginx-selfsigned.key -out /etc/ssl/certs/nginx-selfsigned.crt
按照提示依次输入证书相关信息,包括国家、省份、城市、组织名称、通用名称、电子邮件地址等。
2、配置nginx
打开nginx默认站点配置文件,通常是/etc/nginx/sites-available/default,并根据以下示例进行编辑:
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name example.com; #域名或IP地址
ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt; #ssl证书路径
ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key; #ssl证书密钥路径
#其他nginx配置
}
这里,listen指令用于监听端口,443是HTTPS的默认端口号;server_name用于指定域名或IP地址;ssl_certificate和ssl_certificate_key分别指定SSL证书和密钥的路径。
3、重启nginx
完成上述操作后,需要重启nginx服务器以使配置生效。
sudo systemctl restart nginx
三、优化
以上配置生成的证书是自签名的,不会被浏览器所信任,会弹出警告。要解决这个问题,有以下多种方式:
1、使用CA机构颁发的SSL证书
CA机构是全球通用的SSL证书颁发机构,通过CA机构签发的SSL证书被大多数浏览器所信任。
2、使用Let’s Encrypt免费SSL证书
Let’s Encrypt是一家提供免费SSL证书的组织,可以通过Certbot工具轻松获取SSL证书。安装Certbot:
sudo apt-get update
sudo apt-get install certbot python3-certbot-nginx
安装成功后可以通过以下命令获取证书:
sudo certbot --nginx -d example.com -d www.example.com
这里-d指令用于指定需要获取证书的域名,可以同时指定多个域名。
3、启用HTTP/2
HTTP/2是一种新的Web协议,相对于HTTP/1.x,HTTP/2可以减少页面加载时间、节省带宽资源等,可以用于优化服务器性能。
可以使用以下nginx配置将HTTP/2开启:
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
#其他nginx配置
}
由此可以看出,在开启SSL的同时也可以开启HTTP/2。
四、总结
nginxnginx与OpenSSL的结合是一种安全、高效、稳定的HTTP服务器方案。上述配置方法已经非常成熟,可以应对绝大多数的网站应用场景,而使用更优秀的证书和协议可以进一步提升服务器性能和安全性。
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/290968.html