您的位置:首页 > 理论基础 > 计算机网络

Nginx如何给域名添加https(超详细配置文件解释)

2020-08-05 15:57 941 查看

 

1.申请SSL证书

这个去阿里云官网免费申请 https://www.aliyun.com/

在首页选择:产品分类→安全→SSL证书,点击打开

点击选购证书

选择单域名、DV SSL、免费版、未开通,这样子是免费的,点击下单购买

购买完成之后进入SSL证书控制台

点击证书申请,填写你想添加https的域名及相关信息

点击下一步,会让你在主机解析记录里加一条记录。如果是阿里云的服务器它会自动帮你加好,点击验证即可,不是的话就不用加(好像?)。

验证通过后把证书下下来,选择nginx版本。是一个zip压缩包,里面有.key和.pem文件

2.配置Nginx服务器

我自己用的是nginx,就只给出该服务器配置方法了,别的没试过

把证书压缩包里的两个文件上传到服务器,目录自选,我放在了/usr/local/nginx/conf/cert目录下(cert目录自建)

接着修改nginx.conf配置文件(位于/usr/local/nginx/conf目录)

先理一下文件结构,一般你现在的nginx.conf文件结构大概是这样

[code]...(几行代码)

events
{
...(几行代码)
}

http
{
...(一堆代码)

#默认80监听server
server
{
listen 80 default_server reuseport;
#listen [::]:80 default_server ipv6only=on;
server_name _;
index index.html index.htm index.php;
...(一堆代码)
}

#http的80监听server(你原来http网站访问的端口配置)
server
{
listen 80;
server_name xxx; #绑定域名
index index.htm index.html index.php; #默认文件
root xxx; #网站根目录
...(一堆代码)
}

#我们准备在这里加上SSL配置
...(SSL配置)
#SSL配置结束

include vhost/*.conf;
}

我们要做的就是,还是在http大括号内(不需要额外加https的大括号)再添加一个以下的server。

默认的80监听server和原来http的80监听server可以不用动,就相当于在http大括号中再添加一个443端口的监听,再按有注释(改)的地方修改对应的地方完成配置。

(如果服务器没开启443端口要记得开一下)

[code]# SSL配置
server {
listen 443 ssl;   #SSL协议访问端口号为443。此处如未添加ssl,可能会造成Nginx无法启动。
server_name localhost;  #(改)将localhost修改为您证书绑定的域名,例如:www.example.com。
index index.htm index.html index.php; #默认文件
root /home/wwwroot/default/xxx; #(改)网站根目录
ssl_certificate cert/domain_name.pem;   #(改)证书文件存放目录,将domain_name.pem替换成您证书的文件名。
ssl_certificate_key cert/domain_name.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;

#wordpress伪静态,不是wordpress应该就不用加了
location / {
try_files $uri $uri/ /index.php?$args;
}

#这段是必备,没有好像就不能正常运行,加了就是了
location ~* \.(eot|ttf|woff|woff2)$ {
add_header Access-Control-Allow-Origin '*';
}
include enable-php.conf;
location /nginx_status {
stub_status on;
access_log   off;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
expires      30d;
}
location ~ .*\.(js|css)?$ {
expires      12h;
}
location ~ /.well-known {
allow all;
}
location ~ /\. {
deny all;
}
#必备段到这结束
}

如果不再用http了就把原来的80端口监听server(不是默认的那个)改成重定向https这里面的server内容,访问http时会自动跳转到https,还想继续用http访问就不用改这段。

[code]#重定向https
server {
listen 80;
server_name localhost;   #(改)将localhost修改为您证书绑定的域名,例如:www.example.com。
rewrite ^(.*)$ https://$host$1 permanent;   #将所有http请求通过rewrite重定向到https。
#下面这个不用动
location / {
index index.html index.htm;
}
}

全部修改完成后应该是这样的结构(附带重定向)

[code]...(几行代码)

events
{
...(几行代码)
}

http
{
...(一堆代码)

#默认80监听server
server
{
listen 80 default_server reuseport;
#listen [::]:80 default_server ipv6only=on;
server_name _;
index index.html index.htm index.php;
...(一堆代码)
}

#重定向https(原为http的80监听端口)
server {
listen 80;
server_name localhost;
rewrite ^(.*)$ https://$host$1 permanent;
location / {
index index.html index.htm;
}
}

# SSL配置
server {
listen 443 ssl;
...(一堆代码)
}

include vhost/*.conf;
}

修改完打开服务器命令行执行以下命令重启nginx后完成。

[code]nginx -s reload

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: