若依http转https遇到的坑

若依http转https遇到的坑

坑1:nginx日志出现以下错误

nginx: [emerg] cannot load certificate "/www/ssl/fullchain.pem": PEM_read_bio_X509_AUX() failed (SSL: error:0909006C:PEM routines:get_name:no start line:Expecting: TRUSTED CERTIFICATE)

上面这个问题参考别人的经验主要有两个解决方法
①pem文件的编码格式不对,要转成UTF-8。我是在阿里云直接下载的证书,编码格式用Natepad++看了一下就是正确的。
②nginx的配置文件中的key和pem路径位置弄反了

我的情况没有能用以上方法解决,尝试了很多次都没有用,最后发现是key和pem证书的存放路径问题。首先在拉取nginx镜像的时候,需要进行挂载该证书存放的目录路径,才能正确找到证书的位置,不然会一直报下面这个错误。

 cannot load certificate "/usr/local/nginx/ssl/*.pem": BIO_new_file() failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/usr/local/nginx/ssl/*.pem','r') error:2006D080:BIO routines:BIO_new_file:no such file)

其次我的证书存放路径只能是这个 /etc/nginx/cert,如果在服务器的/etc目录找不到文件的话就自己新建一个对应的文件(我就是自己新建的),将证书放入cert文件夹下,重新启动就可以了。如果放在其他路径下,虽然能找到,但是会一直报上面的那个错误。

坑2:nginx配置文件没问题,但是一直不能成功

nginx配置文件在80端口中不添加 rewrite ^(.*)$ https://$host$1 permanent;就能正常访问,添加这句转向https就会访问不了,且nginx日志没有报错。这个主要原因还是因为443端口没有开放!
在这里插入图片描述可能大家都还挺疑惑的,明明在阿里云服务器或者其他服务器上已经配置开放443端口,为啥还说是443端口没开放。我也是小白一个,后面弄了好久才发现在拉取创建本地nginx镜像的时候我们就得开放443端口,否则一直都不能成功。下面是我拉取镜像的操作

docker run --name ruoyinginx -p 80:80 -p 443:443
-v /root/ruoyi/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
-v /root/ruoyi/nginx/conf/cert:/etc/nginx/cert
-v /root/ruoyi/nginx/html:/usr/share/nginx/html
-v /root/ruoyi/nginx/logs:/var/log/nginx
-d nginx

nginx配置文件(开启https+域名访问)

worker_processes  1; 
events {
    worker_connections  1024; } 
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    client_max_body_size   100m;

    server {
    #配置HTTPS的默认访问端口为443。
    #如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。
    #如果您使用Nginx 1.15.0及以上版本,请使用listen 443 ssl代替listen 443和ssl on。
    listen 443 ssl;

    #填写证书绑定的域名
    server_name  你的域名地址# ;

     ssl_certificate        /etc/nginx/cert/文件名.pem;  
     ssl_certificate_key    /etc/nginx/cert/文件名.key;      

    ssl_session_timeout 5m;
    #表示使用的加密套件的类型
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    #表示使用的TLS协议的类型,您需要自行评估是否配置TLSv1.1协议。
    ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;

    ssl_prefer_server_ciphers on;
   location / {
		root  /usr/share/nginx/html/dist;
		try_files $uri $uri/ /index.html;
		index  index.html index.htm;
        }
  location /profile/
        {
      alias /home/ruoyi/uploadPath/;
      }
  location /prod-api/ {
		proxy_set_header Host $http_host;
		proxy_set_header X-Real-IP $remote_addr;
		proxy_set_header REMOTE-HOST $remote_addr;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_pass https://你的域名地址+端口 ;
		}

        error_page   500 502 503 504  /50x.html;
        	location = /50x.html {
           	root   html;
        }
}

    server {
        listen       80;
        server_name  你的域名地址# 
		charset utf-8;
       rewrite ^(.*)$ https://$host$1 permanent;
                                 
              }
	include /etc/nginx/conf.d/*.conf;
}
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值