栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Docker搭建Nginx并配置ssl证书

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Docker搭建Nginx并配置ssl证书

目录

一、搭建Nginx

1、创建用户组和用户

2、从阿里云申请ssl证书

 3、阿里云域名解析配置

 4、docker创建Nginx

二、创建图片服务器


一、搭建Nginx

1、创建用户组和用户
#创建用户组
groupadd nginx

#创建用户
useradd -g nginx nginx  #第一个参数用户组,第二个参数用户名

#设置密码
passwd nginx

删除用户
userdel nginx

#删除用户组
groupdel nginx

#删除用户所在目录
rm -rf nginx

如果在创建用户过程总发生 Creating mailbox file: File exists错误

执行如下命令

rm -rf /var/spool/mail/nginx  #nginx为对应的用户名

2、从阿里云申请ssl证书

a、

 

b、

 

c、

 

 d、

 e、这里我们选择SSL证书这个,有免费的证书

 f、点击申请证书,填写你的信息,等待审核通过后,下载证书

 g、下载证书,我们选择nginx证书下载

 3、阿里云域名解析配置

a、请确保你的域名已经实名认证

 b、添加记录

 A是将域名指向一个ip 。

CNAME :当需要将域名指向另一个域名,再由另一个域名提供 IP 地址,就需要添加 CNAME 记录,最常用到 CNAME 的场景包括做 CDN、企业邮箱、全局流量管理等。

c、配置完成后,ping一下你的域名,如果能ping通,证明你的域名DNS解析成功

 4、docker创建Nginx
mkdir -p /data/nginx/{conf,conf.d,html,logs,certs}

a、将上面下载的证书解压之后,上传到/data/nginx/certs目录下

b、在/data/conf文件下创建nginx.conf文件

user  nginx;
worker_processes  auto; #一般为cpu核数

error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
	#log格式
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    gzip  on; #开启压缩

    include /etc/nginx/conf.d/*.conf;
}

c、在/data/html文件下创建html文件 index.html




Welcome to nginx!



Welcome to nginx!

If you see this page, the nginx web server is successfully installed and working. Further configuration is required.

For online documentation and support please refer to nginx.org.
Commercial support is available at nginx.com.

Thank you for using nginx.

d、在/data/nginx/conf.d/目录创建default.conf

server {
    listen       80;
    listen  [::]:80;
	server_name www.example.com; #填写域名
	#将所有HTTP请求通过rewrite指令重定向到HTTPS
    rewrite ^(.*) https://$server_name$1 permanent;
}

#配置443端口
server {
		listen 443 ssl;  # 1.1版本后这样写
        server_name www.example.com; #填写域名
		
        ssl_certificate certs/1_www.example.com.pem;  #需要将cert-file-name.pem替换成已上传的证书文件的名称。
		ssl_certificate_key certs/1_www.example.com.key; #需要将cert-file-name.key替换成已上传的证书私钥文件的名称。
		
        ssl_session_timeout 5m;
        #表示使用的加密套件的类型。
		ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; #表示使用的TLS协议的类型。
		ssl_prefer_server_ciphers on;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
		
		ssl_session_cache shared:SSL:1m;
 
        fastcgi_param  HTTPS        on;
        fastcgi_param  HTTP_SCHEME     https;
		
	location / {
		proxy_set_header   X-Real-IP         $remote_addr;
		proxy_set_header   Host              $http_host;
		proxy_set_header   X-Forwarded-For   $proxy_add_x_forwarded_for;
        root html;
        index index.html index.htm;
    }
}

e、授权文件给nginx用户

chown -R nginx:nginx /data/nginx

f、创建容器并启动

docker run --name nginx -d -p 80:80 
 -p 443:443 
 -v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf  
 -v /data/nginx/conf.d/:/etc/nginx/conf.d 
 -v /data/nginx/html:/etc/nginx/html 
 -v /data/nginx/logs:/var/log/nginx 
 -v /data/nginx/certs:/etc/nginx/certs 
 -v /etc/localtime:/etc/localtime:ro 
 nginx:1.21.4

二、创建图片服务器

 1、在/data/nginx/html目录下创建images目录并将图片文件上传到该目录

 2、添加images.conf

server {
	listen  8090 ssl ;	#图片服务器监听的端口	
	server_name images.example.com; #域名
	
    #新的证书,需要将新的证书上传到/certs目录下
	ssl_certificate certs/8_images.example.com.pem;  
	ssl_certificate_key certs/8_images.example.com.key;
		
	ssl_session_timeout 5m;
	ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
	ssl_prefer_server_ciphers on;
	ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
	
	ssl_session_cache shared:SSL:1m;

	fastcgi_param  HTTPS        on;
	fastcgi_param  HTTP_SCHEME     https;
	
	
	location /images/ {	
		expires 24h;
		root html;
		autoindex on;
	}
	
	error_page   500 502 503 504  /50x.html;
        location = /50x.html {
		root   html;
    }
}

3、重新创建nginx容器

docker run --name nginx -d -p 80:80 
 -p 443:443 
 -p 8090:8090 
 -v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf  
 -v /data/nginx/conf.d/:/etc/nginx/conf.d 
 -v /data/nginx/html:/etc/nginx/html 
 -v /data/nginx/logs:/var/log/nginx 
 -v /data/nginx/certs:/etc/nginx/certs 
 -v /etc/localtime:/etc/localtime:ro 
 nginx:1.21.4

8090为图片服务器监听的端口,切记一定要映射出该端口!!!

4、访问为https访问,http访问会报400的错误。 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/864901.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号