服务器上已经安装nginx服务,已经具备http访问;
nginx服务器是否已经安装ssl模块得支持;
是否已经拥有ssl证书;
查看nginx 安装模块
/usr/local/nginx/sbin/nginx -V
如果看到我上图标记得 configure arguments: --with-http_ssl_module, 则已安装
如果之前没有安装更新步骤
cd nginx
./configure --prefix=/usr/local/nginx --with-http_ssl_module
使用 make 命令编译(使用make install会重新安装nginx),此时当前目录会出现 objs 文件夹。用新的 nginx 文件覆盖当前的 nginx 文件
cp ./objs/nginx /usr/local/nginx/sbin/
ssl 证书部署
下载申请好的 ssl 证书文件压缩包到本地并解压(这里是用的 pem 与 key 文件,文件名可以更改)。
在 nginx 目录新建 cert 文件夹存放证书文件。
cd /usr/local/nginx
mkdir cert
nginx 配置
server {
listen 443; #SSL 访问端口号
server_name soft.loiot.com; #填写绑定证书的域名
ssl on; #启用 SSL 功能
ssl_certificate ../cert/c.pem; #证书文件名称
ssl_certificate_key ../cert/c.key; #私钥文件名称
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #请按照这个协议配置
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; #请按照这个套件配置,配置加密套件,写法遵循 openssl 标准。
ssl_prefer_server_ciphers on;
location / {
# 指向本地服务
proxy_pass http://127.0.0.1:7005;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
将 http 重定向 https
server {
listen 80;
server_name somnus.test.com;
#将请求转成https
rewrite ^(.*)$ https://$host$1 permanent;
}
nginx配置多个ssl
配置多个只需要配置多个server就行了
server {
listen 443 ssl;
#填写绑定证书的域名
server_name xxx.com;
#证书文件名称
ssl_certificate ../cert/xxx.com_bundle.crt;
#私钥文件名称
ssl_certificate_key ../cert/xxx.com.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
client_max_body_size 1024m;
location / {
proxy_pass http://halo;
proxy_set_header HOST $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
server {
listen 443 ssl;
#填写绑定证书的域名
server_name xxx.xxx.com;
#证书文件名称
ssl_certificate ../cert/8506918_xxx.com.pem;
#私钥文件名称
ssl_certificate_key ../cert/8506918_xxx.com.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
client_max_body_size 1024m;
location / {
proxy_pass http://localhost:9000;
proxy_set_header HOST $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;