Liunx中使用Docker安装.配置Nginx,SSL证书

什么是Nginx?

Nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器;同时也是一个IMAP、POP3、SMTP代理服务器;Nginx可以作为一个HTTP服务器进行网站的发布处理,另外Nginx可以作为反向代理进行负载均衡的实现。

安装

1.拉取镜像

docker pull nginx

2.创建nginx容器

docker run -di --name=容器名称 -p 本地端口:映射端口(比如80:80) nginx
//-p 假如要监听多个端口,可多写例:-p 80:80 -p 443:443
使用

我们安装好了之后,查看容器是否在运行,执行命令

[root@VM_0_8_centos ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                      NAMES
51451b4303a8        nginx               "nginx -g 'daemon of…"   28 minutes ago      Up 28 minutes       0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   mynginx
965f45a82cff        mysql               "docker-entrypoint.s…"   3 days ago          Up 3 days           33060/tcp, 0.0.0.0:33306->3306/tcp         tensquare_mysql
aa3f9a98ec8d        redis               "docker-entrypoint.s…"   3 days ago          Up 3 days           0.0.0.0:6379->6379/tcp                     myredis

可以清楚的看到,自己创建的容器是否在运行
一些简单的这方面的指令

docker ps //查看运行的容器
docker ps -a //查看所有容器
docker restart 容器名称 //重启容器
docker start 容器名称 //启动容器
docker stop 容器名称 //重启容器
docker rm 容器名称 //删除容器
dockers exec -it 容器名称 /bin/bash //进入容器
exit //退出容器
文件挂载

我们选择docker运行nginx服务器的时候,一般来说使用文件挂载会好一些,文件挂载步骤
1.创建一个临时容器 docker run -d --name nginx_test -p 9000:9000 nginx
2.进入该容器 docker exec -it nginx_test /bin/bash
3.将目录/etc/nginx/复制到本地目录/opt/local docker cp nginx_test:/etc/nginx/ /opt/local
4.停止该容器 docker stop nginx_test
5.删除该容器 docker rm nginx_test
6.创建新的容器挂载本地目录 docker run -di --name mynginx -p 80:80 -v /opt/local/nginx/logs:/var/log/nginx -v /opt/local/nginx:/etc/nginx nginx
7.容器的配置文件,就在本地的/opt/local/nginx配置即可
8.浏览器打开服务器ip地址,显示nginx相关,即配置成功

端口映射转发配置

一般用于一个服务器挂载多个服务,多个域名的时候,我们使用到这个
1.进入/opt/local/nginx/conf.d目录 cd /opt/local/nginx/conf.d
2.复制一份default.conf文件 cp default.conf my.conf
3.修改重要配置,如下,新增一个域名监听则新增一个文件监听然后转发即可

    listen       80; #监听的端口
    server_name  baidu.com www.baidu.com;#填写监听的域名
    location / {
        proxy_pass http://ip:端口;
    }
ssl证书的配置

ssl证书是监听443端口,但是我们网络请求的时候,不会去输入https请求头,所以默认请求的是80端口,我们要做一个判断,假如是80端口则进行转发到443端口
按照以下配置

server {
    listen 80;
    listen 443 ssl;
    server_name  www.wocusx.cn wocusx.cn;
    ssl on;
    ssl_certificate 1_xxxxx_bundle.crt;
    ssl_certificate_key 2_xxxxx.key;
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers on;
    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;
    if ($server_port = 80) {
        return 301 https://$server_name$request_uri;
        }
    if ($scheme = http) {
        return 301 https://$server_name$request_uri;
        }
     error_page 497 https://$server_name$request_uri;
}

注意

1.每次修改conf配置文件需要重启nginx
2.nignx监听的端口由创建的时候-p命令决定,如已经创建,需要修改进入到该nginx容器/var/lib/docker/containers/{容器 ID+ 一些字符串}/hostconfig.json中修改

"PortBindings":{"容器端口 /tcp":[{"HostIp":"","HostPort":"宿主机端口"}]

同时修改同目录下的 config.v2.json

"Ports":{"容器端口 /tcp":[{"HostIp":"0.0.0.0","HostPort":"宿主机端口"}]} 

然后重启容器即可

你可能感兴趣的:(Liunx中使用Docker安装.配置Nginx,SSL证书)