什么是Nginx?
Nginx是一款自由的、開源的、高性能的HTTP服務(wù)器和反向代理服務(wù)器;同時也是一個IMAP、POP3、SMTP代理服務(wù)器;Nginx可以作為一個HTTP服務(wù)器進行網(wǎng)站的發(fā)布處理,另外Nginx可以作為反向代理進行負載均衡的實現(xiàn)。
安裝
1.拉取鏡像
docker pull nginx
2.創(chuàng)建nginx容器
docker run -di --name=容器名稱 -p 本地端口:映射端口(比如80:80) nginx
//-p 假如要監(jiān)聽多個端口,可多寫例:-p 80:80 -p 443:443
使用
我們安裝好了之后,查看容器是否在運行,執(zhí)行命令
[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
可以清楚的看到,自己創(chuàng)建的容器是否在運行
一些簡單的這方面的指令
docker ps //查看運行的容器
docker ps -a //查看所有容器
docker restart 容器名稱 //重啟容器
docker start 容器名稱 //啟動容器
docker stop 容器名稱 //重啟容器
docker rm 容器名稱 //刪除容器
dockers exec -it 容器名稱 /bin/bash //進入容器
exit //退出容器
文件掛載
我們選擇docker運行nginx服務(wù)器的時候,一般來說使用文件掛載會好一些,文件掛載步驟
1.創(chuàng)建一個臨時容器 docker run -d --name nginx_test -p 9000:9000 nginx
2.進入該容器 docker exec -it nginx_test /bin/bash
3.將目錄/etc/nginx/復(fù)制到本地目錄/opt/local docker cp nginx_test:/etc/nginx/ /opt/local
4.停止該容器 docker stop nginx_test
5.刪除該容器 docker rm nginx_test
6.創(chuàng)建新的容器掛載本地目錄 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.瀏覽器打開服務(wù)器ip地址,顯示nginx相關(guān),即配置成功
端口映射轉(zhuǎn)發(fā)配置
一般用于一個服務(wù)器掛載多個服務(wù),多個域名的時候,我們使用到這個
1.進入/opt/local/nginx/conf.d目錄 cd /opt/local/nginx/conf.d
2.復(fù)制一份default.conf文件 cp default.conf my.conf
3.修改重要配置,如下,新增一個域名監(jiān)聽則新增一個文件監(jiān)聽然后轉(zhuǎn)發(fā)即可
listen 80; #監(jiān)聽的端口
server_name baidu.com www.baidu.com;#填寫監(jiān)聽的域名
location / {
proxy_pass http://ip:端口;
}
ssl證書的配置
ssl證書是監(jiān)聽443端口,但是我們網(wǎng)絡(luò)請求的時候,不會去輸入https請求頭,所以默認請求的是80端口,我們要做一個判斷,假如是80端口則進行轉(zhuǎn)發(fā)到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監(jiān)聽的端口由創(chuàng)建的時候-p命令決定,如已經(jīng)創(chuàng)建,需要修改進入到該nginx容器/var/lib/docker/containers/{容器 ID+ 一些字符串}/hostconfig.json中修改
"PortBindings":{"容器端口 /tcp":[{"HostIp":"","HostPort":"宿主機端口"}]
同時修改同目錄下的 config.v2.json
"Ports":{"容器端口 /tcp":[{"HostIp":"0.0.0.0","HostPort":"宿主機端口"}]}
然后重啟容器即可