docker中使用nginx配置腾讯云ssl证书,443端口无法连接

环境:docker + 腾讯云轻量应用服务器+腾讯云域名

准备:首先需要去腾讯云域名下载ssl证书文件,创建安全组开放443端口,服务器防火墙开放443端口;

如果上面操作都做好了,在nginx也配置了,但是还是有问题,那么就是你的nginx没有映射443端口,博主这里就是踩了这个坑,话不多说,进入正题;


1.先修改nginx两个配置文件,nginx.conf和default.conf

nginx.conf文件



user  nginx;

#开启的线程数,一般跟逻辑CPU核数一致
worker_processes  auto;

#定位全局错误日志文件,级别以notice显示,还有debug,info,warn,error,crit模式,debug输出最多,crir输出最少,根据实际环境而定
error_log  /var/log/nginx/error.log notice;

#指定进程id的存储文件位置
pid        /var/run/nginx.pid;


events {
#定义每个进程的最大连接数,受系统进程的最大打开文件数量限制。
    worker_connections  1024;
}


http {


	#填写您的证书文件名称,例如:cloud.tencent.com_bundle.crt
	ssl_certificate cloud.tencent.com_bundle.crt;  
	
	#填写您的私钥文件名称,例如:cloud.tencent.com.key
	ssl_certificate_key cloud.tencent.com.key;    
   
	server {
       listen 443 ssl;
       server_tokens off;
       keepalive_timeout 5;
       root /usr/share/nginx/html; #填写您的网站根目录
       index index.php index.html;
       server_name www.cloud.tencent.com; #填写您的证书绑定的域名,例如:www.cloud.tencent.com
       ssl_certificate cloud.tencent.com_bundle.crt; #填写您的证书文件名称,例如:cloud.tencent.com_bundle.crt
       ssl_certificate_key cloud.tencent.com.key; #填写您的私钥文件名称,例如:cloud.tencent.com.key
       ssl_session_timeout 5m;
       ssl_protocols TLSv1 TLSv1.1 TLSv1.2;  # 可参考此 SSL 协议进行配置
       ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;   #可按照此加密套件配置,写法遵循 openssl 标准
       ssl_prefer_server_ciphers on;
       location ~* \.php$ {
           fastcgi_pass   127.0.0.1:9000;
           client_max_body_size 20m;
           fastcgi_connect_timeout 30s;
           fastcgi_send_timeout 30s;
           fastcgi_read_timeout 30s;
           fastcgi_intercept_errors on;
       }
	}


	server {
	 listen 80;
     #请填写绑定证书的域名
     server_name www.cloud.tencent.com; 
     #把http的域名请求转成https
     return 301 https://$host$request_uri; 
    }


}

default.conf文件

server {
    #侦听80端口,如果强制所有的访问都必须是HTTPs的,这行需要注销掉
    #listen    80;       
    listen    443 ssl;
    server_name cloud.tencent.com;             #域名
 
    # 增加ssl
    #ssl on;        #如果强制HTTPs访问,这行要打开
    ssl_certificate /etc/nginx/conf.d/ssl/cloud.tencent.com_bundle.crt;  #证书文件路径
    ssl_certificate_key /etc/nginx/conf.d/ssl/cloud.tencent.com.key; #key文件路径
 
    ssl_session_cache    shared:SSL:1m;
    ssl_session_timeout  5m;
 
     # 指定密码为openssl支持的格式
     ssl_protocols  SSLv2 SSLv3 TLSv1.2;
 
     ssl_ciphers  HIGH:!aNULL:!MD5;  # 密码加密方式
     ssl_prefer_server_ciphers  on;   # 依赖SSLv3和TLSv1协议的服务器密码将优先于客户端密码
 
     # 定义首页索引目录和名称
     location / {
		root /usr/share/nginx/html;
        index index.html index.htm;
	 }
 
    #重定向错误页面到 /50x.html
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

 2.重新构建容器并启动

这里一定要把映射端口443加进去,不然nginx无法监听。

docker run \
-p 443:443 \
-p 80:80 \
--name nginx \
-v /mydata/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /mydata/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /mydata/nginx/log:/var/log/nginx \
-v /mydata/nginx/html:/usr/share/nginx/html \
-d nginx:latest
参数说明
-name  给你启动的容器起个名字,以后可以使用这个名字启动或者停止容器
-p     映射端口,将docker宿主机的80端口和容器的80端口进行绑定
-v    挂载文件用的,
-m 200m 分配内存空间
-e TZ=Asia/Shanghai  设置时区
第一个-v 表示将你本地的nginx.conf覆盖你要起启动的容器的nginx.conf文件,
第二个-v 表示将日志文件进行挂载,就是把nginx服务器的日志写到你docker宿主机的/home/docker-nginx/log/下面
第三个-v 表示的和第一个-v意思一样的。
-d 表示启动的是哪个镜像

到这里再去访问域名,应该就会转跳到对应的网页;

如果这里还不行,先检查一下准备内是否都配置好了,如果还是不行,欢迎沟通。

猜你喜欢

转载自blog.csdn.net/qq_42990433/article/details/129322762