2020-05-20—SSL证书配置及https跳转

SSL证书配置及https跳转

一、nginx配置SSL证书

1、首先是免费SSL 证书的申请(以阿里云为例,如果不是请自行百度)

背景信息

  • 本文档以CentOS 7、Nginx 1.16.1为例。

  • 本文档证书名称以3376871_ellison.lovewinter.top为示例,如证书文件名称为3376871_ellison.lovewinter.top.pem,证书密钥文件名称为3376871_ellison.lovewinter.top.key

  • 下载的Nginx证书压缩文件解压后包含:

    • .pem:证书文件。PEM文件的扩展名为CRT格式。
    • .key:证书的密钥文件。申请证书时如果未选择自动创建CRS,则下载的证书文件压缩包中不会包含.key文件,需要您将自己手动创建的密钥文件拷贝到cert目录下。
    ##安装最新版nginx
    # 添加 Nginx 源
    sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

    # 安装 Nginx
    sudo yum install -y nginx

    # 启动 Nginx
    sudo systemctl start nginx.service

    # 设置开机自启 Nginx
    sudo systemctl enable nginx.service

    # 下载 Halo(也可以是其他conf文件,其他只需要把后边的地址换了就行) 官方的 Nginx 配置模板
    # 这里只是下载模板而已,自己写也是可以的
    curl -o /etc/nginx/conf.d/halo.conf --create-dirs http://halo.ryanc.cc/config/nginx.conf

我的就是自定义的conf

# 先贴出我配置成功之后的.conf文件,注意这里是我自定义的conf文件
# 我是在nginx.conf中加了 include /etc/nginx/conf.d/*.conf;
# 意思是加载/etc/nginx/conf.d/文件夹下的所有.conf文件
server {
listen 443 ssl;

server_name ellison.lovewinter.top;
#ssl_certificate /usr/local/nginx/cert/3376871_ellison.lovewinter.top.pem;
#ssl_certificate_key /usr/local/nginx/cert/3376871_ellison.lovewinter.top.key;
ssl_certificate cert/3376871_ellison.lovewinter.top.pem;
ssl_certificate_key cert/3376871_ellison.lovewinter.top.key;

ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;

client_max_body_size 1024m;

location / {
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;

proxy_pass http://ellison.lovewinter.top/;

}
}


server {
listen 80;

server_name ellison.lovewinter.top;
rewrite ^(.*)$ https://$host$1 permanent;
client_max_body_size 1024m;

location / {
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;

proxy_pass http://127.0.0.1:8090/;
}
}

操作步骤:

1、登陆阿里云官网,申请免费的SSL证书。(具体申请步骤自行百度)

2、 在证书下载侧页面中定位到Nginx服务器,并单击右侧操作栏的下载,将Nginx服务器证书压缩包下载到本地

3、解压已下载保存到本地的Nginx证书压缩包文件。

​ 解压后的文件夹中有2个文件:

  • ​ 证书文件:以.pem为后缀或文件类型 。
  • ​ 密钥文件:以.key为后缀或文件类型 。

4、 登录您的Nginx服务器,在Nginx安装目录(默认Nginx安装目录为/usr/local/nginx/conf)下创建cert目录,并将下载的证书文件和密钥文件拷贝到cert目录中。

5、 修改Nginx安装目录/conf/nginx.conf文件。

# 以下属性中以ssl开头的属性代表与证书配置有关,其他属性请根据自己的需要进行配置。
server {
listen 443 ssl; #SSL协议访问端口号为443。此处如未添加ssl,可能会造成Nginx无法启动。
server_name ellison.lovewinter.top; #将localhost修改为您证书绑定的域名,例如:www.example.com。
#root html;
#index index.html index.htm;
ssl_certificate cert/3376871_ellison.lovewinter.top.pem; #将domain name.pem替换成您证书的文件名。
ssl_certificate_key cert/3376871_ellison.lovewinter.top.key; #将domain name.key替换成您证书的密钥文件名。
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; #使用此加密套件。
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #使用该协议进行配置。
ssl_prefer_server_ciphers on;
location / {
root html; #站点目录。
index index.html index.htm;
#这里可以用代理地址
proxy_pass http://127.0.0.1:8090/;
}
}

6、保存nginx.conf文件后退出。

7、执行以下命令重启Nginx服务器。

#可以使用检查和重载命令
nginx -t #检查配置文件修改是否有语法错误
nginx -s reload #重新加载nginx.conf配置文件

#也可以将nginx服务重启
systemctl restart nginx.service

8、可选: 设置HTTP请求自动跳转HTTPS。

在需要跳转的HTTP站点下添加以下rewrite语句,实现HTTP访问自动跳转到HTTPS页面。

######这里还是在nginx.conf里操作,修改配置文件
# 注意: 你的项目文件中若有地址访问,也必须得写成https://,否则会访问不到资源
server {
listen 80;

server_name ellison.lovewinter.top;
rewrite ^(.*)$ https://$host$1 permanent;
client_max_body_size 1024m;

location / {
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;

proxy_pass http://127.0.0.1:8090/;
}
}

9、之后执行重启nginx命令。

===================搞定!!!!!!

这下你就可以直接进行项目访问了。

发布于

2020-05-20

更新于

2022-03-25

许可协议

评论

:D 一言句子获取中...

加载中,最新评论有1分钟缓存...