https://blog.csdn.net/cxy35/article/details/106277053
1 检查 Nginx 是否支持 SSL
/usr/local/nginx/sbin/nginx -V
查看是否包含 —with-http_ssl_module 模块,如果没有,则需要在编译时指定或增加该模块。
1 未安装过 Nginx
具体安装步骤参考: Nginx 安装 - Linux
# 只需要在 ./configure 时指定 ssl 模块--with-http_ssl_module
2 已安装过 Nginx
如果已经安装过 Nginx ,又不想重新安装,则可以单独添加 ssl 模块。
# 关闭 Nginx/usr/local/nginx/sbin/nginx -s stop# 查看 Nginx 安装时的配置参数,复制备用/usr/local/nginx/sbin/nginx -V# configure arguments: --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_gzip_static_module ...# 进入 nginx-1.16.1 目录cd /usr/local/nginx-1.16.1# 重新执行 cofigure 命令,增加 ssl 模块的配置./configure \--prefix=/usr/local/nginx \--error-log-path=/usr/local/nginx/logs/error.log \--http-log-path=/usr/local/nginx/logs/access.log \--pid-path=/usr/local/nginx/logs/nginx.pid \--lock-path=/usr/local/nginx/logs/nginx.lock \--http-client-body-temp-path=/usr/local/nginx/temp/client-body \--http-proxy-temp-path=/usr/local/nginx/temp/proxy \--http-fastcgi-temp-path=/usr/local/nginx/temp/fastcgi \--http-uwsgi-temp-path=/usr/local/nginx/temp/uwsgi \--http-scgi-temp-path=/usr/local/nginx/temp/scgi \--with-http_stub_status_module \--with-http_ssl_module \--with-http_gzip_static_module \--with-file-aio \--with-http_realip_module# 编译(不安装)make# 备份原来的 nginx 命令cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx-bak# 替换原来的 nginx 命令cp /usr/local/nginx-1.16.1/objs/nginx /usr/local/nginx/sbin/nginx
2 生成证书
# 创建存放证书的目录mkdir /usr/local/sslcd /usr/local/ssl# 创建服务器私钥,命令会让你输入一个口令。openssl genrsa -des3 -out server.key 1024# 再生成一个不带密码的(非必须)# openssl rsa -in server.key -out server-nopassword.key# 创建签名请求的证书(CSR)openssl req -new -key server.key -out server.csr# 标记证书使用上述私钥和 CSRopenssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt# 再生成一个不带密码的(非必须)# openssl x509 -req -days 365 -in server.csr -signkey server-nopassword.key -out server-nopassword.crt
3 配置 Nginx
修改配置文件,开启 ssl ,并指定标记的证书和私钥。
server {listen 80;server_name localhost;listen 443 ssl;ssl_certificate /usr/local/ssl/server-nopassword.crt;ssl_certificate_key /usr/local/ssl/server-nopassword.key;#rewrite ^(.*)$ https://$host$1 permanent;#...}
