简介:
IP有限,所以我们以前使用端口来区分不同的虚拟主机,提供不同的WEB服务。
小范围还凑活,一旦规模扩大,地址记不住了吧?端口记不住了吧?
这个时候我们可以使用DNS,域名解析,毕竟记名字比记IP和端口好记。
但是,不想但是也得但是,我们以前使用的一部分端口是没办法解析的。
好吧,有用过IIS的同学会考虑,用虚拟主机,绑定域名即可。多个域名解析到相同的IP,使用相同的IP,由IIS根据访问域名来决定使用哪个虚拟主机来相应这个请求。
继续但是,IIS是微软家的技术,我最近部署的都是python+flask,IIS能支持么?
不过我已经过渡到linux+docker来部署了。这时候有什么办法来实现类似IIS的虚拟主机功能呢?
同一个IP地址,使用不同的访问域名来使用不同的主机来相应请求。
可以使用Nginx的反向代理功能。
我使用的是DOCKER技术,部署docker,部署apache,部署tomcat。
一:环境安装
1.安装linux。
2.安装docker。
3.安装docker-compose。
全略
二:docker安装Nginx
1.配置nginx.yaml
version: "3" #版本3 services: #服务 nginx: #服务名 image: nginx:stable-alpine #镜像名称 privileged: true #高级权限 tty: true #开一个终端 container_name: nginx #自定义容器名 restart: always networks: #网络 - et_net #属于网络mynet ports: #开放端口映射3306-->3306 - 80:80 #冒号左边是宿主机开放端口,冒号右边是容器开放端口 #volumes: #- ./nginx.conf:/etc/nginx/nginx.conf:ro #command: [nginx-debug, '-g', 'daemon off;'] #映射mariadb的数据库文件存储路径,冒号左边是宿主机路径,冒号右边是容器内路径 networks: #关于网络的服务 et_net: #声明网络mynet
以上内容保存为nginx.yaml即可。
2.启动nginx
运行
docker-compose -f nginx.yaml up -d
3.测试nginx
这样就配置好了,在你操作的工作站访问linux的IP,就能看到nginx启动成功如下:
三:docker安装apache
1.配置apache.yaml
version: "3" #版本3 services: #服务 apache: #服务名 image: httpd:alpine #镜像名称 privileged: true #高级权限 tty: true #开一个终端 container_name: apache1 #自定义容器名 restart: always networks: #网络 - et_net #属于网络et_net ports: #开放端口映射 - 8080:80 #冒号左边是宿主机开放端口,冒号右边是容器开放端口 #volumes: #- ng./nginx.conf:/etc/nginx/nginx.conf:ro #映射文件存储路径,冒号左边是宿主机路径,冒号右边是容器内路径 #command: [nginx-debug, '-g', 'daemon off;'] networks: #关于网络的服务 et_net: #声明网络mynet
以上内容保存为apache.yaml即可
2.启动apache
运行
docker-compose -f apache.yaml up -d
3.测试访问apache
这样就配置好了,在你操作的工作站访问linux的IP,就能看到apache启动成功如下: