如何为Nginx服务器添加SSL证书,实现https访问

本文主要介绍在如何在Nginx中添加ssl证书实现https访问。

未安装Nginx的,请参考该文章进行安装-安装Nginx教程

事前准备:Linux系统主机,Nginx服务器,已通过的审核的SSL证书。

以腾讯云为例:
在“审核通过的SSL”证书列表中选择对应域名的证书进行“下载”然后“解压”,解压后,选择“Nginx”文件夹下的.crt及.key这两个文件。
在这里插入图片描述
将以上两个文件上传至Linux主机上面。强烈推荐放在“/etc/ssl”目录下方。

修改配置前,先停止nginx运行:

./sbin/nginx -s quit

然后修改nginx的运行目录的nginx.conf文件,博主这里的运行目录为:/usr/local/nginx,使用命令 :

vim /usr/local/nginx/conf/nginx.conf

编辑示例:

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;


    # HTTPS server
    # https的server,如果服务下面有需要支持多个域名https化的需求的话,则照例配置多个server即可
    server {
        listen       443 ssl; #在443后面加入ssl,可以实现同时支持http和https访问
        server_name ab.def.com; # 这里只需要更换为你的域名即可
		# ssl on; # 实现同时支持http和https访问的时候还要把这里进行注释

        ssl_certificate      /etc/ssl/你的证书.crt; # 证书的路径
        ssl_certificate_key  /etc/ssl/你的证书.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;
		
		add_header Content-Security-Policy "upgrade-insecure-requests";// 在https的网页内引用http的资源(例如图片,视频这些资源)会出现跨域错误,所以要在服务器请求头添加改行声明,允许跨域。

        location / {
            proxy_pass http://127.0.0.1:8081;
        }
    }
 
	# 把http强行转接到https去
	server{
        listen 80;
        server_name ab.def.com;
        rewrite ^/(.*)$ https://ab.def.com:443/$1 permanent;
    }

}

以上即可完成nginx的配置,启动nginx服务并重新加载配置文件:

sudo /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

注意:-c 指定配置文件的路径,不加的话,nginx会自动加载默认路径的配置文件,可以通过 -h查看帮助命令。

然后,如果没有报错,则配置成功。但是。。大多数人都会报错,提示错误诸如此类:nginx: [emerg] the “ssl” parameter requires。原因就是缺少SSL的模块。

我们先来到当初下载nginx的包压缩的解压目录,如果你是看上面的教程安装的,解压目录就在“/usr/local/nginx/nginx-1.11.3”。

cd /usr/local/nginx/nginx-1.11.3

然后执行-命令A

./configure --with-http_ssl_module

部分同学执行以上命令会报错,提示需要引入OpenSSL,则引入即可:

yum -y install openssl openssl-devel

大多数Ubuntu用户使用这条命令会提示“There are no enabled repos. Run “yum repolist all” to see the repos you have…”,所以再分别执行:

sudo apt-get install openssl 
sudo apt-get install libssl-dev

执行以上命令后,如无报错,则就已经成功安装OpenSSL,如下图:
在这里插入图片描述
然后再执行命令:

./configure

再然后重复命令A

./configure --with-http_ssl_module

执行重新编译-命令B

make       (注意不是make install)

进行备份:

cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
cp objs/nginx /usr/local/nginx/sbin/nginx

然后再重新启动,并且加载配置:

sudo /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

尝试使用https访问,验证是否成功,完成。

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

迪八戈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值