思路
docker
是为了便携性; acme.sh
是为了颁发证书,使得流量加密; nginx
是为了伪装成正常网站.
我们在nginx
服务器里面放静态网页伪装成一个网站,再在nginx
配置文件里面设置一个流量转发的路径,当请求这个路径的时候就把流量转发给v2ray服务端,v2ray服务端再返回你需要的内容.
步骤
docker hub
里面已经有别人弄好的nginx镜像
,acme.sh镜像
和v2ray镜像
,我们只需要配置一下就行了.
下载镜像并检测
你要先安装docker,如果不知道docker怎么安装看我这篇文章{% post_link linux安装docker %}
下载镜像
docker pull nginx
docker pull v2ray/official
docker pull neilpang/acme.sh
检测镜像
docker images
如果出现下图就安装成功
配置acme.sh镜像
在宿主机上准备一个目录存放证书,我设定
/root/acme
下面存放证书mkdir -p /root/acme
启动acme.sh容器,并把证书目录进行映射
docker run --rm -itd -v /root/acme:/acme.sh --net=host --name=acme.sh neilpang/acme.sh daemon
用上面这种方式启动后
acme.sh
容器会在后台运行,我们可以通过docker exec
来生成证书,并且该作者已经配置好定期更新证书 3. 生成证书
docker exec acme.sh --issue -d example.com --standalone
上面命令的
example.com
改为你自己的域名,通过上面步骤你会在/root/acme/你的域名
下面找到很多文件,其中以你的域名.cer
和你的域名.key
的文件就是我们需要的证书和密匙
配置nginx镜像
先查看宿主机IP,通过ifconfig命令可以查看,记住它,后面要用
- 提前准备好nginx配置文件,我已经准备好了,我存放的位置是
/root/nginx/nginx.conf
主配置文件,/root/nginx/conf.d
从属配置文件夹,/root/nginx/html
伪装用的网页
/root/nginx/nginx.conf文件主要内容
/root/nginx/conf.d文件夹结构
/root/nginx/conf.d/default.conf文件主要内容
/root/nginx/conf.d/v2ray.conf文件主要内容,
找到容器内对应的nginx配置文件位置,我直接给出来
/etc/nginx/nginx.conf
主配置文件,/etc/nginx/conf.d
从属配置文件夹,/usr/share/nginx/html
存放网页的文件夹.写个Dockfile,把Dockerfile放进
/root/nginx
文件夹下面执行Dockfile生成我们需要的镜像,并生成容器
#生成镜像 docker build -t mynginx-image /root/nginx #生成容器 docker run -v /root/acme/你的域名:/root/acme -p 80:80 -p 443:443 -d --name mynginx mynginx-image
上面的命令加了-v /root/acme/你的域名:/root/acme
这句话,意思就是把刚刚生成的证书目录和nginx容器中的/root/acme关联起来,这样nginx容器就可以找到证书
配置v2ray镜像
- 准备好v2ray的配置文件
我的配置文件是/root/v2ray/config.json
生成v2ray容器
docker run -v /root/v2ray:/etc/v2ray -p 15146:15146 -d --name myv2ray v2ray/official
总结
通过上面的步骤就能配置安装好docker版v2ray, 以后只要保存好这三个镜像和配置文件就能很快部署好v2ray, 至于如何让v2ray服务端和客户端相连,请看官网介绍