Nginx配置虚拟主机的三种方式
Nginx 支持三种类型的虚拟主机配置
- 基于 IP 的虚拟主机(不支持云服务器!)
- 基于端口的虚拟主机
- 基于域名的虚拟主机(应用最多)
1.基于 IP 的虚拟主机配置方式
注意:买的云服务器主机不支持该方式,应为云服务器不能修改网关,修改网关会导致无法远程连接!!!
云服务器请使用2.基于端口号或者3.基于域名来配置!
[1] 需求
一台 Linux 服务器绑定两个 ip:120.25.255.144、120.25.255.188访问不同的 ip 请求不同的 html 目录,即:
访问 http://120.25.255.144将访问“html144”目录下的 html 网页
访问 http://120.25.255.188将访问“html188”目录下的 html 网页
[2] 创建 HTML 目录
为了区分,把复制得到的目录名设置为html144、html145,分别表示144端口和145端口访问的页面。
为了区分html页面,我们可以修改html144和html145目录中的index.html页面,在标题Welcome to Nginx 后面加ip地址。
[3]Linux 绑定多 IP
注意:购买的云服务器不支持该功能!一旦修改网关后就不能使用SSH连接。必须应用于自己安装的虚拟机。
Linux 操作系统允许绑定多 IP。使用 IP 别名的方式,在一块物理网卡上可以绑定多个 lP地址。这样就能够在使用单一网卡的同一个服务器上运行多个基于 IP 的虚拟主机。但是在绑定多 IP 时需要将动态的 IP 分配方式修改为静态的指定 IP。
- 1 将动态 IP 修改为静态 IP
修改ifcfg-eth0文件
vim /etc/sysconfig/network-scripts/ifcfg-eth0
(将动态IP改成静态IP@[TOC](这里写自定义目录标题))
DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
IPADDR=(设置 IP 地址)
NETMASK=255.255.255.0
GATEWAY=(设置网关)
DNS1=114.114.114.114
DNS2=4.4.4.4
IPV6INIT=no
重启Linux系统。
注意:重启后要关闭防火墙,或者添加80端口
打开Windows下的CMD,ping 虚拟机的IP地址。如果出现以下页面则表示修改成功。
- 2.IP 绑定
将/etc/sysconfig/network-scripts/ifcfg-eth0 文件复制两份,命名为ifcfg-eth0:1
和ifcfg-eth0:2修改其中内容:
DEVICE=eth0:1
IPADDR=192.168.70.188
其他项不用修改
重启系统
具体操作如下
cd /etc/sysconfig/network-scripts
cp ifcfg-eth0 ifcfg-eth0:1
cp ifcfg-eth0 ifcfg-eth0:2
修改ifcfg-eth0:1内容
修改ifcfg-eth0:2内容
修改完毕后重启虚拟机
重启后用Windows下的CMD ping IP地址
若都能ping成功则说明绑定多IP成功。
[4]修改Nginx 的配置文件 nginx.conf
在nginx/conf/目录下编译nginx.conf配置文件
重启nginx
在nginx/sbin/目录下,执行以下命令
关闭Nginx命令: ./nginx -s quit
开启Nginx命令:./nginx
然后用浏览器访问nginx主页
出现对应的页面则表示配置成功。
2.基于端口号的虚拟主机配置方式
[1]创建html目录
在nginx根目录下,拷贝html目录两份,命名为html端口号
为了区分访问的页面,把html3881、html3882中的index.html均修改标题。
ps:默认不支持中文,所以访问时中文会乱码。我已经把中文删除了
[2]修改nginx/conf/nginx.conf文件
nginx.conf的配置文件如下,我们主要配置的是其中的server{}结构
user root;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
#一个Server就是一个虚拟主机
server {
#监听的端口号
listen 80;
#虚拟主机的ip地址
server_name 192.168.85.144 ;
#charset koi8-r;
#access_log logs/host.access.log main;
#主要配置路由访问信息
location / {
#用于指定访问根目录时,访问虚拟主机的web目录
root html144;
#在不指定访问具体资源时,默认的展示资源的列表
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
保存后退出
重启nginx
#进入nginx/sbin目录下
关闭nginx:./nginx -s quit
开启nginx: ./nginx
至此,配置成功。
3.通过域名来配置虚拟主机
[1] 需求
两个域名指向同一个 nginx 服务器,用户访问不同的域名时显示不同的内容。
域名规划:
1,test.qiaotong.com
2,test.qt.com
至于为什么不用www.开头,是应为浏览器在访问www.开头的网址时会强制使用https协议,而目前程度上仅支持http协议。若要支持https协议则需要再进行配置。
[2]创建 HTML 目录
进入nginx根目录下,拷贝html目录重命名为html-qiaotong、html-qt
编辑html-qiaotong、html-qt目录中的index.html文件,用来区分。
[3]修改 windows 的 hosts 文件配置域名与 ip 的映射
注意:如果是服务器已经备案域名了,则无需此步骤
注意:如果是服务器已经备案域名了,则无需此步骤
注意:如果是服务器已经备案域名了,则无需此步骤
该步骤的作用范围仅作用于当前windows电脑
文件路径:C:\Windows\System32\drivers\etc
保存并关闭。修改之后,在浏览器输入配置的网址,就会直接访问对应的ip地址了。当然,仅作用于当前windows电脑。
[4] 修改 Nginx 的配置文件完成基于域名的虚拟主机配置
进入nginx/conf目录下,修改nginx.conf文件
vim /usr/local/nginx/conf/nginx.conf
重启nginx
#进入nginx/sbin目录
关闭nginx ./nginx -quit
开启nginx ./nginx
用http协议根据域名访问
至此,配置成功!