Ubuntu Linux 中虚拟主机的配置 - 搭配 Nginx

虚拟主机,正如其名,就是将一台服务器划分为多个虚拟的主机,可以将每个域名分配给不同的虚拟主机,这样可以充分利用了域名资源和硬件资源。这次我们采用 Nginx 实现虚拟主机的配置。

Nginx 是一款 free、开源的高性能 HTTP 服务器和反向代理服务器,同时可用作 IMAP、POP3、SMTP 服务器,它经常被用作 HTTP 服务器进行 Web 应用的部署使用,另外,Nginx 还经常以反向代理服务器的身份实现负载均衡。

使用 Nginx 配置虚拟主机只需编辑 Nginx 安装目录下 conf/nginx.conf 即可,增加一个虚拟主机只需要在配置文件中添加一个 server 节点,就像这样:


server {

    listen 80;

    server_name test1.example.com;

    location / {

        index index.html;

        root /home/www/test1/;

    }

}

server {

    listen 80;

    server_name test2.example.com;

    location / {

        index index.html;

        root /home/www/test2/;

    }

}

listen 为监听的端口,本例中监听 80 端口

server_name 即指定的虚拟主机名

location 只 Nginx 代理的相对 URL 范围

index 指主页的文件名

root 为网站根目录在系统中的实际位置

location / 表示匹配这个主机名下的所有请求,server_name 的值可以为 *.example.com 这种形式,即匹配所有以 example.com 结尾的主机名,亦或 test.*,即所有以 test 开头的主机名,还可以用正则表达式的形式,比如 ~^test\d+\.example\.com$,如果使用正则表达式,最前面要加上 ~ 这个符号。

以上两个虚拟主机实现了将对不同主机名的请求指向不同的物理目录,下面介绍如何用虚拟主机实现区分端口,即将不同主机名的请求分发到不同端口上

和上面的配置写法类似:


server {

    listen 80;

    server_name demo1.example.com;

    location / {

        proxy_pass http://127.0.0.1:8080;

    }

}

server {

    listen 80;

    server_name demo2.example.com;

    location / {

        proxy_pass http://127.0.0.1:8081;

    }

}

proxy_pass 表示将请求转发到某个 URL,这样便可以实现虚拟主机名和端口的映射了。如果采用一台物理机部署多个 Tocmat 服务实例则可以采用这种方式,这样就避免了暴露多个端口的问题。

个人博客同步更新,获取更多技术分享请关注:郑保乐的博客

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,131评论 19 139
  • 配置运行Nginx服务器用户(组) 用于配置运行Nginx服务器用户(组)的指令是user,其语法格式为: use...
    吃瓜的东阅读 4,575评论 0 41
  • Nginx简介 解决基于进程模型产生的C10K问题,请求时即使无状态连接如web服务都无法达到并发响应量级一万的现...
    魏镇坪阅读 2,114评论 0 9
  • 阅读之前,建议先阅读初识 Nginx。 之后,我们来了解一下 Nginx 配置。 抽象来说,将 Nginx 配置为...
    思梦PHP阅读 1,367评论 2 10
  • 一个生活在黑暗中的人见到阳光,就犹如罂栗闻到血水的味道,无法抑制心中的渴望。 一个生活在黑暗中的人看见了阳光会向往...
    Amy沉香阅读 238评论 0 0