域名+端口改为直接通过域名访问
问题
本文是购买的云服务器通过配置解析,使docker项目通过域名+端口访问,无法通过域名直接访问而写。
通过网上学习,饶了一大圈终于找到解决办法,结合nginx的启动分享给大家,没有原理,只是实践。另外copy时候注意空格
修改配置文件
1、docker先拉取nginx镜像,此处省略。。
2、启动nginx
docker run -d --name nginx1 -p 80:80 nginx
3、将nginx配置文件复制到宿主机上
1、获取容器ID
docker ps
2、根据容器ID将nginx配置文件复制到宿主机上
docker cp 9d016b45e599:/etc/nginx/conf.d/default.conf /usr/mynginx/conf.d/
docker cp 9d016b45e599:/etc/nginx/nginx.conf /usr/mynginx/conf/
3、修改default.conf内容
listen 80;
server_name www.xiaoxiangzi.xyz;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
proxy_pass http://01.234.56.789:9001;
root /usr/share/nginx/html;
index index.html index.htm;
}
此处解释下:将server_name修改为你的域名,增加proxy_pass信息即公网ip+应用端口,记住是公网ip不是docker ip。
标题利用宿主机配置文件
1、先停止容器,并删除容器
docker stop 9d016b45e599
docker rm 9d016b45e599
2、重新启动
docker run -d --name nginx1 -p 80:80 -p 443:443 -v /usr/mynginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /usr/mynginx/logs:/var/log/nginx -v /usr/mynginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf -v /usr/mynginx/static/html:/usr/share/nginx/html nginx
简单解释下: -v 表示挂载服务器目录,即用服务器的配置文件启动docker nginx 。"/usr/mynginx"等目录是我自己创建,任务目录都可以
域名访问
1、配置前:http://www.xiaoxiangzi.xyz:9001/web/hello
2、配置后:http://www.xiaoxiangzi.xyz/web/hello
此处省略结果。。。由于网站备案中无法展示,此处展示的是接口访问,页面的访问还需要再配置,等备案完成再完善吧
结尾
如果本文描述的不够恰当或者错误请指正,欢迎交流学习。。。