在 Linux 上使用 nginx 反向代理部署 Docker 网站
最编程
2024-03-26 07:05:02
...
在政务云上部署Web环境,为了保证服务器安全,甲方只开放一个端口且只允许使用https协议进行访问,经过思考,决定使用docker部署网站,使用nginx反向代理,通过不同的二级域名访问不同的端口。
1 使用docker部署网站
参见:https://blog.****.net/mingjing941018/article/details/136801590
2 使用docker安装nginx
//安装命令
docker pull nginx
//查看安装的镜像,安装完成后,会生成一个nginx镜像
docker images
3 为了方便更改配置,将nginx的配置文件和证书文件挂载到服务器本地
1.创建本地挂载目录;
//配置文件挂载目录
mkdir /opt/docker/nginx/conf.d -p
//证书文件存放目录
mkdir /opt/docker/nginx/cert -p
2.先运行nginx容器,查看配置文件目录;
//启动nginx
docker run --name nginx -p 80:80 -d nginx
//进入docker的nginx容器
docker exec -it nginx bash
//查找nginx配置文件default.conf
//这个在/etc/nginx/conf.d/default.conf
find / -name "default.conf"
//查找nginx配置文件nginx.conf
//这个在/etc/nginx/nginx.conf
find / -name "nginx.conf"
//退出容器
exit
3.将容器的配置文件复制到我们的挂载目录中;
//把docker内的default.conf复制到外部
docker cp nginx:/etc/nginx/conf.d/default.conf /opt/docker/nginx/conf.d/default.conf
//把docker内的nginx.conf复制到外部
docker cp nginx:/etc/nginx/nginx.conf /opt/docker/nginx/conf.d/nginx.conf
4.删除之前的容器
//停止容器
docker stop nginx
//删除容器
docker rm -f nginx
5.编辑挂载目录下的nginx.conf文件,否则执行下一步,查看日志信息会报异常:nginx: [emerg] open() “/etc/nginx/mime.types” failed (2: No such file or directory) in /etc/nginx/nginx.conf
删除红框内容:
6.使用挂载命令运行容器
//-v表示挂载的文件,-v [该文件在容器外部的位置]:[该文件在容器内部的位置]
docker run --name nginx -p 80:80 -p 443:443 -v /opt/docker/nginx/conf.d/nginx.conf:/etc/nginx/nginx.conf -v /opt/docker/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf -v /opt/docker/nginx/cert:/etc/nginx -d nginx
//查看容器是否正常运行
docker ps
//查看日志信息
docker logs nginx
7.修改配置文件default.conf
//若有多个网站,可使用多个server
server {
listen 80; #侦听80端口
listen 443 ssl; #侦听443端口,用于SSL
server_name tandk.com www.tandk.com; # 自己的域名
# 注意证书文件名字和位置,是从/etc/nginx/下开始算起的
ssl_certificate 1_tandk.com_bundle.crt;
ssl_certificate_key 2_tandk.com.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;
client_max_body_size 1024m;
location / {
proxy_set_header HOST $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 这里写的是我的腾讯云内网地址,不知道为啥,不能用127.0.0.1...
proxy_pass http://xx.xx.xx.xx:8090;
}
}
8.配置完成,重启容器
//停止nginx
docker stop nginx
//启动容器
docker start nginx
//查看是否启动成功
docker ps
4 关于证书
免费证书:可免费使用一年,一个二级域名需使用一个证书
付费证书:设置一个主域名证书,所有二级域名都可以使用这个证书