nginx 配置虚拟主机

本贴最后更新于 1654 天前,其中的信息可能已经时异事殊

  nginx 可以配置三种虚拟主机,分别是端口号主机,IP 主机和以及域名主机,而三种虚拟主机又可以混合配置。
  在 nginx 安装目录中有一个名叫 nginx.conf 的配置文件,默认的虚拟主机配置以及示例都在此配置文件中,个人建议是把每一个虚拟主机都单独配置成一个配置文件,首先,我们需要注释掉 nginx.conf 中关于 sever 的配置,包括大括号下的内容都给注释掉。然后引入外部配置文件,只需要在 http 节点内添加一行配置:include vhost/*.conf;,接下来在当前目录下创建 vhost 目录,然后在里面创建以 conf 为后缀的文件均可以被识别为配置文件。

  • 端口号主机

  端口号主机就是以不同的端口号来区分不同的主机,首先在上文所说的 vhost 目录中新建一个以 conf 为后缀的文件,然后在该文件中进行配置,下面贴一个我的配置:

server {
        listen 8443 ssl;
        server_name localhost;
        root html;
        index index.html index.htm;
#	下面以ssl开头的是配置证书时才使用的,不配置证书直接不写。
        ssl_certificate ../cert/2651106_www.jiangqiang.xin.pem;   #将domain name.pem替换成您证书的文件名。
        ssl_certificate_key ../cert/2651106_www.jiangqiang.xin.key;   #将domain name.key替换成您证书的密钥文件名。
        ssl_session_timeout 5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        location / {
                add_header Access-Control-Allow-Origin *;
                proxy_pass http://127.0.0.1:8080;#任何访问路径和端口号都可以
                index index.html index.htm;
        }
}

上面配置的意思是输入此主机的任意 ip 或域名加端口号 8443 时(如果配置了证书,协议就需要使用 https,否则使用 http),和在本主机上访问 http://127.0.0.1:8080 的效果一样。如果我们在本机上起一个 solo 博客系统,那么默认访问的端口是 8080,使用 nginx 配置后,可以使用其他端口进行访问(我这里是 8443)。如果有两台服务器,一台服务器上有一个 8080 端口的 web 项目,我们也可以在另一台服务器上使用 nginx 将其他端口映射到 8080 端口。上面的配置复制多份,每一份修改监听的端口号和 location 中的内容,就变成了多个不同的端口号主机。

  • 域名主机

  域名主机是通过不同的域名进行区分访问哪一个主机,此时的端口号可以相同。首先我们去/etc/hosts 文件中加入一些配置:

127.0.0.1 jiangqiang.jios,org #前面是当前主机的ip,后面是当前主机的域名
127.0.0.1 blog.jiangqiang.xin #同一个主机配置有多个域名

  然后如上文所说的方式创建配置文件,在配置文件中输入以下内容:

server { #此主机没有配置证书,如果不需要证书时,就这么配置
        listen 80;
        server_name jiangqiang.jios.org;#访问的域名
        location / {
                proxy_pass http://127.0.0.1:8080;
                index index.html index.htm;
        }

}

server {
        listen 80 ssl;
        server_name www.jiangqiang.xin;#访问的域名
        root html;
        index index.html index.htm;
        ssl_certificate ../cert/2651106_www.jiangqiang.xin.pem;   #将domain name.pem替换成您证书的文件名。
        ssl_certificate_key ../cert/2651106_www.jiangqiang.xin.key;   #将domain name.key替换成您证书的密钥文件名。
        ssl_session_timeout 5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        location / {
                add_header Access-Control-Allow-Origin *;
                proxy_pass http://www.jiangqiang.xin;
                index index.html index.htm;
        }
}

  这个配置文件中实际上是两个虚拟主机的配置,并且监听的端口号都是 80,如果访问的是 http://jiangqiang.jios.org ,那么就是访问上面那个主机。如果访问的是 https://www.jiangqiang.xin:80 (因为配置了证书,所以协议是 https,https 协议默认端口号是 443,因此需要显示写明端口),就是访问下面那个主机。

  • IP 主机

  首先需要给该主机配置多个 IP,然后所有的配置和域名主机配置基本一样,只不过 server_name 后面填写不同的 ip 即可。我们就可以通过不同的 IP 进行访问不同的虚拟主机。个人一般比较少用,使用前面两种虚拟主机配置足够。

注意:以上几种虚拟主机之间可以混合搭配。

  • NGINX

    NGINX 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 NGINX 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。

    311 引用 • 546 回帖 • 68 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • uTools

    uTools 是一个极简、插件化、跨平台的现代桌面软件。通过自由选配丰富的插件,打造你得心应手的工具集合。

    5 引用 • 13 回帖
  • C

    C 语言是一门通用计算机编程语言,应用广泛。C 语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

    83 引用 • 165 回帖 • 69 关注
  • danl
    55 关注
  • 倾城之链
    23 引用 • 66 回帖 • 97 关注
  • Git

    Git 是 Linux Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

    204 引用 • 357 回帖 • 1 关注
  • Shell

    Shell 脚本与 Windows/Dos 下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比 Windows 下的批处理更强大,比用其他编程程序编辑的程序效率更高,因为它使用了 Linux/Unix 下的命令。

    122 引用 • 73 回帖
  • MongoDB

    MongoDB(来自于英文单词“Humongous”,中文含义为“庞大”)是一个基于分布式文件存储的数据库,由 C++ 语言编写。旨在为应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似 JSON 的 BSON 格式,因此可以存储比较复杂的数据类型。

    90 引用 • 59 回帖 • 3 关注
  • 安装

    你若安好,便是晴天。

    127 引用 • 1183 回帖
  • Docker

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的操作系统上。容器完全使用沙箱机制,几乎没有性能开销,可以很容易地在机器和数据中心中运行。

    472 引用 • 892 回帖 • 3 关注
  • Sphinx

    Sphinx 是一个基于 SQL 的全文检索引擎,可以结合 MySQL、PostgreSQL 做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。

    1 引用 • 170 关注
  • Latke

    Latke 是一款以 JSON 为主的 Java Web 框架。

    70 引用 • 532 回帖 • 697 关注
  • golang

    Go 语言是 Google 推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发 Go,是因为过去 10 多年间软件开发的难度令人沮丧。Go 是谷歌 2009 发布的第二款编程语言。

    491 引用 • 1383 回帖 • 373 关注
  • PWA

    PWA(Progressive Web App)是 Google 在 2015 年提出、2016 年 6 月开始推广的项目。它结合了一系列现代 Web 技术,在网页应用中实现和原生应用相近的用户体验。

    14 引用 • 69 回帖 • 117 关注
  • 阿里云

    阿里云是阿里巴巴集团旗下公司,是全球领先的云计算及人工智能科技公司。提供云服务器、云数据库、云安全等云计算服务,以及大数据、人工智能服务、精准定制基于场景的行业解决方案。

    89 引用 • 345 回帖 • 2 关注
  • SendCloud

    SendCloud 由搜狐武汉研发中心孵化的项目,是致力于为开发者提供高质量的触发邮件服务的云端邮件发送平台,为开发者提供便利的 API 接口来调用服务,让邮件准确迅速到达用户收件箱并获得强大的追踪数据。

    2 引用 • 8 回帖 • 426 关注
  • wolai

    我来 wolai:不仅仅是未来的云端笔记!

    1 引用 • 11 回帖 • 1 关注
  • WebComponents

    Web Components 是 W3C 定义的标准,它给了前端开发者扩展浏览器标签的能力,可以方便地定制可复用组件,更好的进行模块化开发,解放了前端开发者的生产力。

    1 引用 • 28 关注
  • OpenStack

    OpenStack 是一个云操作系统,通过数据中心可控制大型的计算、存储、网络等资源池。所有的管理通过前端界面管理员就可以完成,同样也可以通过 Web 接口让最终用户部署资源。

    10 引用 • 9 关注
  • 前端

    前端技术一般分为前端设计和前端开发,前端设计可以理解为网站的视觉设计,前端开发则是网站的前台代码实现,包括 HTML、CSS 以及 JavaScript 等。

    247 引用 • 1346 回帖 • 2 关注
  • 新人

    让我们欢迎这对新人。哦,不好意思说错了,让我们欢迎这位新人!
    新手上路,请谨慎驾驶!

    50 引用 • 225 回帖
  • 创业

    你比 99% 的人都优秀么?

    82 引用 • 1397 回帖
  • ZeroNet

    ZeroNet 是一个基于比特币加密技术和 BT 网络技术的去中心化的、开放开源的网络和交流系统。

    1 引用 • 21 回帖 • 589 关注
  • Gitea

    Gitea 是一个开源社区驱动的轻量级代码托管解决方案,后端采用 Go 编写,采用 MIT 许可证。

    4 引用 • 16 回帖 • 5 关注
  • 互联网

    互联网(Internet),又称网际网络,或音译因特网、英特网。互联网始于 1969 年美国的阿帕网,是网络与网络之间所串连成的庞大网络,这些网络以一组通用的协议相连,形成逻辑上的单一巨大国际网络。

    96 引用 • 330 回帖
  • FFmpeg

    FFmpeg 是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。

    22 引用 • 31 回帖 • 9 关注
  • Jenkins

    Jenkins 是一套开源的持续集成工具。它提供了非常丰富的插件,让构建、部署、自动化集成项目变得简单易用。

    51 引用 • 37 回帖 • 6 关注
  • 微软

    微软是一家美国跨国科技公司,也是世界 PC 软件开发的先导,由比尔·盖茨与保罗·艾伦创办于 1975 年,公司总部设立在华盛顿州的雷德蒙德(Redmond,邻近西雅图)。以研发、制造、授权和提供广泛的电脑软件服务业务为主。

    8 引用 • 44 回帖