(超详细)Nginx添加https配置文件详解

 

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

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

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

...(几行代码)

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端口要记得开一下)

# 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访问就不用改这段。

#重定向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;
    }
}

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

...(几行代码)

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后完成。

nginx -s reload

 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值