摘要
食用须知:本文档详细配置了关于Nginx的HTTPS的配置,是在一台服务器上监听多个端口,并且只有一个域名的情况下,配置多个端口号采用HTTPS的方式发送请求。
说明
我们先来说说HTTP和HTTPS的区别
HTTP(超文本传输协议)和HTTPS(安全HTTP)是用于在客户端和服务器之间传输数据的两种不同协议。它们之间的主要区别在于安全性。有以下几点区别。
- 安全性:HTTP是明文协议,数据在传输过程中是以明文形式发送的,容易被窃听和篡改。而HTTPS通过使用TLS(传输层安全)协议对通信进行加密,确保数据传输的机密性和完整性。HTTPS使用公钥加密和私钥解密的方式,使得数据在传输过程中更加安全。
- 数据传输方式:HTTP使用默认端口80进行通信,而HTTPS使用默认端口443。HTTP的数据传输速度通常比HTTPS快一些,因为HTTPS需要进行加密和解密的过程,会增加一定的计算负担和传输延迟。
- 证书要求:为了在网站上使用HTTPS,需要获取并安装SSL/TLS证书。这个证书是由经过合法认证的证书颁发机构(CA)签发的,用于验证服务器身份的数字凭证。而HTTP不需要使用证书。
- SEO(搜索引擎优化):搜索引擎通常更喜欢安全的HTTPS网站,在搜索结果中更有可能获得更好的排名。因此,使用HTTPS可以提高网站的可见性和信誉度。
到此我们就明白了为什么要采用HTTPS的协议来发送请求,因为它相对更安全。安全肯定是首位
上述提到了SSL/TLS证书,需要相关人去申请,我们只需要拿到申请的证书做事就可以啦 。
添加ssl证书
当我们拿到ssl证书的时候,我们可以去到nginx的目录下新建一个文件夹cert(mkdir cert),把相关的证书上传到这个文件夹,一般是两个,一个是.key文件,一个是.pem文件。
配置nginx.conf
1.通过命令找到nginx的位置
whereis nginx
2.切换到/nginx/conf目录
3.配置nginx采用HTTPS协议
如果你需要监听443端口,可以按照如下配置,添加的server配置是在http{}下。
server {
listen 443 ssl;#必须加上ssl
server_name xxx.com.cn; #可以是域名,可以是ip
#charset koi8-r;
#access_log logs/host.access.log main;
root /var/www/html/test/web; # nginx的访问目录
index index.html index.htm; #首选文件
#设置文件上传大小
client_max_body_size 100m;
#配置ssl协议
ssl_certificate /usr/local/nginx/cert/xxx.pem; #ssl证书路径
ssl_certificate_key /usr/local/nginx/cert/xxx.key; #ssl证书路径
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
try_files $uri $uri/ /index.php$is_args$args; #配置伪静态
#proxy_pass http://127.0.0.1:8082;#动态转发
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/www/html/test/web;
}
}
如果你要配置这个域名多个端口的监听也是采用https协议,也是按照上述配置复制一份在它下方,更改端口号就可以。亲测有效。例如:我监听8081 8082
server {
listen 8081 ssl;
server_name xxx.com.cn;
#charset koi8-r;
#access_log logs/host.access.log main;
root /var/www/html/test/web;
index index.html index.htm;
#设置文件上传大小
client_max_body_size 100m;
ssl_certificate /usr/local/nginx/cert/xxx.pem;
ssl_certificate_key /usr/local/nginx/cert/xxx.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
try_files $uri $uri/ /index.php$is_args$args;
#proxy_pass http://127.0.0.1:8082;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/www/html/test/web;
}
}
server {
listen 8082 ssl;
server_name xxx.com.cn;
#charset koi8-r;
#access_log logs/host.access.log main;
root /var/www/html/test/web;
index index.html index.htm;
#设置文件上传大小
client_max_body_size 100m;
ssl_certificate /usr/local/nginx/cert/xxx.pem;
ssl_certificate_key /usr/local/nginx/cert/xxx.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
try_files $uri $uri/ /index.php$is_args$args;
#proxy_pass http://127.0.0.1:8082;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/www/html/test/web;
}
}