nginx配置ssl证书后无法访问https

Posted brady-wang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx配置ssl证书后无法访问https相关的知识,希望对你有一定的参考价值。

 

一直听说https更安全,要安装证书,一直没试过,今天终于试了试

首先得有个http的域名网站,服务器。

到阿里云的安全-ssl证书管理申请一个免费的,可以绑定一个域名  然后完善资料,照着例子配置一个ssl 重启nginx 

具体流程阿里云有文档

 

下面是我的conf配置文件

server
        {
        listen 443 ssl http2;
        #listen [::]:443 ssl http2;
        server_name     yeves.cn www.yeves.cn;
        index index.html index.htm index.php default.html default.htm default.php;
        root  /www/yeves;
        ssl on;

       ssl_certificate  /usr/local/nginx/cert/a.pem;
       ssl_certificate_key  /usr/local/nginx/cert/a.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;

        #error_page   404   /404.html;

        # Deny access to PHP files in specific directory
        #location ~ /(wp-content|uploads|wp-includes|images)/.*\\.php$ { deny all; }

        include enable-php.conf;

        location ~ .*\\.(gif|jpg|jpeg|png|bmp|swf)$
        {
            expires      30d;
        }
		location /{
		      try_files $uri $uri/ /index.php?$uri&$args;
		}
        location ~ .*\\.(js|css)?$
        {
            expires      12h;
        }

        location ~ /.well-known {
            allow all;
        }

        location ~ /\\.
        {
            deny all;
        }

        access_log  /tmp/yeves.log;
}

server
        {
        listen          80;
        server_name yeves.cn www.yeves.cn;
        return 301 https://www.yeves.cn$request_uri;
}

 

配置好后 重启nginx  
结果发现一直无法访问,但是http可以的,突然想起阿里云有个安全组,端口必须手动开放,去开放了443端口果然可以了 

目的:https方式访问网站

解决步骤:

1,首先得确保http访问该网站是没问题的。

2,配置nginx.conf监听443端口,443是ssl默认的端口

a,nginx.conf这个文件所在路径:/www/server/nginx/conf/nginx.conf(因为我是用宝塔面板安装的nginxa跟不用宝塔面板安装的路径会有所不同)

b,nginx.conf中http模块里的server模块是用来配置虚拟主机的,我们的ssl配置就要再server模块里完成,因为宝塔面板在创建网站的时候,就将每个虚拟主机的conf单独写出来了,然后在nginx.conf里include这些单独的conf。形如:include /www/server/panel/vhost/nginx/*.conf; 

c,需要修改你想要配置https的虚拟主机的conf文件,形如(需增加的配置):

server

{

    listen 443 ssl;

    server_name www.xxxxx.cn;这个域名必须是你申请ssl证书的时候绑定的域名

    ssl on;

    ssl_certificate /www/server/panel/vhost/cert/1682997_www.fancy56.cn.pem; #SSL 证书文件路径,由证书签发机构提供

    ssl_certificate_key /www/server/panel/vhost/cert/1682997_www.fancy56.cn.key; #SSL 密钥文件路径,由证书签发机构提供

    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;

}

3,到云服务器的控制台,添加安全组规则,增加443端口

4,云服务器的防火墙开启443端口

firewall-cmd --zone=public --add-port=443/tcp --permanent  增加443端口

firewall-cmd --reload  重启防火墙

以上就是我在配置ssl的时候遇到的一些问题解决方式。

 

阿里云文档:

https://help.aliyun.com/knowledge_detail/95491.html?spm=5176.2020520154.cas.25.1abbF170F170Ll

 

以上是关于nginx配置ssl证书后无法访问https的主要内容,如果未能解决你的问题,请参考以下文章

Windows下Nginx配置SSL实现Https访问(包含证书生成)

nginx开启ssl配置https证书和密钥过程

nginx配置ssl证书实现https访问

nginx配置ssl证书实现https访问

Windows下Nginx配置SSL实现Https访问(包含证书生成)

nginx怎么配置ssl可以即允许http访问也允许https访问