欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

在 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 关于证书

免费证书:可免费使用一年,一个二级域名需使用一个证书
付费证书:设置一个主域名证书,所有二级域名都可以使用这个证书