什么是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":"宿主机端口"}]}
然后重启容器即可