Nginx 反向代理 一个IP代理多个域名,不区分端口,类似windows虚拟机。

时光总嘲笑我的痴心妄想 提交于 2019-11-30 11:29:09

简介:

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启动成功如下:

四:

五:

六:

七:

八:

九:

十:

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!