如何使用NGINX设置基于名称和基于IP的虚拟主机(服务器模块)

在本文中,我们将解释如何使用Nginx在CentOS / RHEL 7服务器和Debian 8及其衍生产品中设置基于名称和基于ip的虚拟主机,

在因为它是开发和提供时间(略超过10年)时间相对较短,Nginx的经历Web服务器之间的持续稳定增长,因为它的高性能和低内存占用。

Nginx基于名称和基于IP的虚拟主机

Nginx基于名称和基于IP的虚拟主机

由于Nginx的是自由和开放源码软件,它已经通过了世界各地成千上万的Web服务器管理员,不仅在Linux和* nix的服务器,而且在Microsoft Windows。

不要错过Apache的名称和基于IP为基础的虚拟主机

对于我们这些最常用到Apache,Nginx可能有几分陡峭的学习曲线(至少这是我的情况),但一旦你设置了一对夫妇的网站,并开始看到流量和资源使用情况统计可以肯定的回报。

在这篇文章中,我们将介绍如何使用Nginx的建立基于域名基于IP的虚拟主机在CentOS的 / RHEL 7服务器和Debian 8及衍生物,开始与Ubuntu 15.04和它的副产品。

我们的本文测试场景如下:

  1. 操作系统 :Debian 8 杰西服务器[IP 192.168.0.25]
  2. 网关 :路由器[IP 192.168.0.1]
  3. Web服务器 :Nginx的1.6.2-5
  4. 虚拟域 :www.howtoinglovesnginx.com和www.nginxmeanspower.com。

安装Nginx Web服务器

如果你还没有这样做,请继续安装Nginx。 如果您需要帮助开始,快速搜索nginx在这个网站将返回关于这个主题的几篇文章。 点击此页面顶部的放大镜图标, 搜索关键字nginx的 如果你不知道如何搜索在这个网站的文章,不要担心,我们已经添加了nginx文章的链接,只是通过并安装它根据您的各自的Linux发行版。

  1. 在RHEL / CentOS 7中从源安装和编译Nginx
  2. 在Debian 8上安装Nginx Web服务器
  3. 在Fedora 23上安装Nginx和MariaDB和PHP / PHP-FPM
  4. 在Ubuntu 15.10服务器/桌面上安装Nginx Web服务器
  5. 密码保护Nginx网站目录

然后准备继续本教程的其余部分。

在Nginx中创建基于名称的虚拟主机

我相信你已经知道,虚拟主机是由Nginx在单个云VPS或物理服务器提供服务的网站。 然而,在Nginx的文档,你会发现术语"server blocks"代替,但它们基本上都是由不同的名字叫同样的事情。

第一步建立虚拟主机是创建一个或多个服务器块(在我们的例子中,我们将创建两个,每个虚拟域)的主要配置文件(/etc/nginx/nginx.conf)或里面的/ etc / nginx的/网站可用

虽然这个目录中的配置文件的名称(站点可用)可以被任何你想要的设置,它的使用域的名称是个好主意,而且除了我们选择要添加.conf扩展表明这些是配置文件。

这些服务器块可能相对复杂,但在其基本形式中,它们由以下内容组成:

/etc/nginx/sites-available/howtoinglovesnginx.com.conf:

server {  
listen       80;  
server_name  howtoinglovesnginx.com www.howtoinglovesnginx.com;
access_log  /var/www/logs/howtoinglovesnginx.access.log;  
error_log  /var/www/logs/howtoinglovesnginx.error.log error; 
root   /var/www/howtoinglovesnginx.com/public_html;  
index  index.html index.htm;  
}

/etc/nginx/sites-available/nginxmeanspower.com.conf:

server {  
listen       80;  
server_name  nginxmeanspower.com www.nginxmeanspower.com;
access_log  /var/www/logs/nginxmeanspower.access.log;  
error_log  /var/www/logs/nginxmeanspower.error.log error;
root   /var/www/nginxmeanspower.com/public_html;  
index  index.html index.htm;  
}

您可以使用上面的块开始设置你的虚拟主机,或者您可以创建从/ etc / nginx的/网站的可用/默认 (Debian的 )或/etc/nginx/nginx.conf.default的基本骨架中的文件( CentOS的 )。

复制后,请更改其权限和所有权:

# chmod 660  /etc/nginx/sites-available/howtoinglovesnginx.com.conf
# chmod 660  /etc/nginx/sites-available/nginxmeanspower.com.conf

Debian和Derivatives

# chgrp www-data  /etc/nginx/sites-available/howtoinglovesnginx.com.conf
# chgrp www-data  /etc/nginx/sites-available/nginxmeanspower.com.conf

CentOS和RHEL

# chgrp nginx  /etc/nginx/sites-available/howtoinglovesnginx.com.conf
# chgrp nginx  /etc/nginx/sites-available/nginxmeanspower.com.conf

完成后,应删除示例文件或将其重命名为其他值,以避免混淆或冲突。

请注意,您还需要创建日志的目录( /var/www/logs ),并给Nginx的用户(nginx的WWW的数据 ,这取决于你正在运行的CentOS或Debian的)读取并对其写入权限:

# mkdir /var/www/logs
# chmod -R 660 /var/www/logs
# chgrp <nginx user> /var/www/logs

现在必须通过在sites-enabled目录中创建此文件的符号链接来启用虚拟主机:

# ln -s /etc/nginx/sites-available/howtoinglovesnginx.com.conf /etc/nginx/sites-enabled/howtoinglovesnginx.com.conf
# ln -s /etc/nginx/sites-available/nginxmeanspower.com.conf /etc/nginx/sites-enabled/nginxmeanspower.com.conf

接下来,创建一个名为样本HTML文件index.html/var/www/<domain name>/public_html为每个虚拟主机(更换<域名>如需要)。 根据需要修改以下代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Howtoing loves Nginx</title>
</head>
<body>
<h1>Howtoing loves Nginx!</h1>
</body>
</html>

最后,测试Nginx配置并启动Web服务器。 如果配置中有任何错误,系统将提示您进行更正:

# nginx -t && systemctl start nginx
检查Nginx配置

检查Nginx配置

和下面的条目添加到您的/etc/hosts在本地计算机文件作为基本的名称解析策略:

192.168.0.25 howtoinglovesnginx.com
192.168.0.25 nginxmeanspower.com

然后启动Web浏览器并转到上面列出的URL:

检查Nginx基于名称的虚拟主机

检查Nginx基于名称的虚拟主机

要在Nginx中添加更多虚拟主机,只需根据需要重复上述步骤即可。

基于IP的虚拟主机在Nginx

至于反对的所有主机通过同一个IP地址访问基于域名的虚拟主机, 基于IP的虚拟主机需要一个不同的IP:port每个组合。

这允许Web服务器根据接收请求的IP地址和端口返回不同的站点。 既然命名为基础的虚拟主机给我们共享一个IP地址和端口的优势,他们是通用的Web服务器的标准,应该是首选,除非你安装的Nginx的版本不支持服务器名称指示的设置(SNI) ,或者是因为它确实是一个过时的版本,或者是因为它是在没有-with-http_ssl_module编译编译选项。

如果,

# nginx -V

不返回下面突出显示的选项:

检查Nginx版本和模块

检查Nginx版本和模块

您将需要更新您的Nginx版本或重新编译它,这取决于您的原始安装方法。 对于编译Nginx,请按照下面的文章:

  1. 在RHEL / CentOS 7中从源安装和编译Nginx

假设我们是好去,我们需要注意的是基于IP的虚拟主机的另一个前提条件是独立IP地址的可用性-无论是通过将它们分配到不同的网络接口,或者通过使用虚拟IP的(也称为IP别名)。

要执行Debian的 IP别名(假设你使用的eth0),编辑/etc/network/interfaces如下:

Debian和Derivatives

auto eth0:1
iface eth0:1 inet static
address 192.168.0.25
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.1
auto eth0:2
iface eth0:2 inet static
address 192.168.0.26
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.1

在上面的例子中,我们创建了两个虚拟NIC出eth0: eth0:1 (192.168.0.25),并eth0:2 (192.168.0.26)。

CentOS和RHEL

在CentOS的,重命名的/ etc / sysconfig / network中的脚本/的ifcfg-enp0s3作为ifcfg-enp0s3:1 ,使一个副本ifcfg-enp0s3:2 ,然后只需更改以下线路,分别为:

DEVICE="enp0s3:1"
IPADDR=192.168.0.25

DEVICE="enp0s3:2"
IPADDR=192.168.0.26

完成后,重新启动网络服务:

# systemctl restart networking

接下来,对本文前面定义的服务器块进行以下更改:

/etc/nginx/sites-available/howtoinglovesnginx.com.conf:

listen 192.168.0.25:80

/etc/nginx/sites-available/nginxmeanspower.com.conf:

listen 192.168.0.26:80

最后,重新启动Nginx使更改生效。

# systemctl restart nginx

不要忘记更新你的本地/etc/hosts相应:

192.168.0.25 howtoinglovesnginx.com
192.168.0.26 nginxmeanspower.com

因此,为192.168.0.25192.168.0.26做端口80上的每个请求将返回howtoinglovesnginx.comnginxmeanspower.com,分别为:

检查Nginx基于IP的虚拟主机

检查Nginx基于IP的虚拟主机

如上图所示,现在有两个基于IP的虚拟主机,使用服务器中唯一的具有两个不同IP别名的NIC。

摘要

在本教程中,我们已经介绍了如何成立Nginx的两个基于域名 和基于IP的虚拟主机。 虽然你可能想使用第一个选项,重要的是要知道另一个选项仍然存在,如果你需要它 - 只是确保你考虑到本指南中概述的事实后作出这个决定。

此外,您可能想书签Nginx的文档 ,因为它是有价值的,也指他们经常在创建服务器块(你有它-我们现在在Nginx的语言交谈)和配置它们。 您不会相信所有可用的配置和调整此优秀的Web服务器的选项。

和往常一样,如果您对本文有任何问题或意见,请随时使用下面的表格给我们留言。 我们期待您的回音,您对本指南的反馈是最受欢迎的。