编程技术分享平台

网站首页 > 技术教程 正文

nginx基于ip的虚拟主机配置(nginx配置iphash)

xnh888 2024-09-14 15:37:20 技术教程 32 ℃ 0 评论

1. 什么是虚拟主机

虚拟主机是一种特殊的软硬件技术,它可以将网络上的每一台计算机分成多个虚拟主机,每个虚拟主机可以独立对外提供www服务,这样就可以实现一台主机对外提供多个web服务,每个虚拟主机之间是独立的,互不影响的。

如下图:

通过nginx可以实现虚拟主机的配置,nginx支持三种类型的虚拟主机配置:

1、基于ip的虚拟主机

2、基于域名的虚拟主机

3、基于端口的虚拟主机

实际使用的过程中,我们一般常用的是用域名或是端口来区分web服务。只不过我这里为了讲的全面一点,会把三种配置都讲一讲。

2. nginx配置文件的结构

nginx的配置文件结构如下:

......
events {
 .......
}
http{
 .......
 server{
 .......
 }
 server{
 .......
 }
}

每个server就是一个虚拟主机。

3. 基于ip的虚拟主机配置

Linux操作系统允许添加IP别名,就是在一块物理网卡上绑定多个lP地址。这样就能够在使用单一网卡的同一个服务器上运行多个基于IP的虚拟主机。

应用场景

一台nginx服务器绑定两个ip:192.168.78.132、192.168.78.133,访问不同的ip请求不同的html目录,即:

访问http://192.168.78.132将访问html132目录下的html网页

访问http://192.168.78.133将访问html133目录下的html网页

i. 准备环境

创建192.168.78.132 的虚拟机,保证本地电脑和虚拟网络通畅。

在192.168.78.132上安装nginx。

ii. 绑定多ip

1、修改网络配置文件,进入到/etc/sysconfig/network-scripts,编辑ifcfg-ens33文件如下:

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
# BOOTPROTO=dhcp 注意区别!!!
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=26c2f3f8-62c5-4571-80e2-ca394cfd43da
DEVICE=ens33
ONBOOT=yes
ZONE=public
# 注意区别
IPADDR0=192.168.78.132
PREFIX0=24
IPADDR1=192.168.78.133
PREFIX1=16

2、保存修改,重启网络: systemctl restart network

[root@bogon network-scripts]# systemctl restart network

iii. 创建两个web网站

进入/usr/local/nginx 目录,将原来nginx的html目录拷贝两个目录 “html132”和“html133”,为了方便测试需要修改每个目录下的index.html内容使之个性化。

cd /usr/local/nginx
cp -r html html132
cp -r html html133

iv. 配置虚拟主机

修改/usr/local/nginx/conf/nginx.conf文件,添加两个虚拟主机,如下:

#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
 worker_connections 1024;
}
http {
 include mime.types;
 default_type application/octet-stream;
 
 sendfile on;
 keepalive_timeout 65;
 #配置虚拟主机192.168.78.132
 server {
 #监听的ip和端口,配置192.168.78.132:80
 listen 80;
 #虚拟主机名称这里配置ip地址
 server_name 192.168.78.132;
 #所有的请求都以/开始,所有的请求都可以匹配此location
 location / {
 #使用root指令指定虚拟主机目录即网页存放目录
 #比如访问http://ip/test.html将找到/usr/local/html3/test.html
 #比如访问http://ip/item/test.html将找到/usr/local/html3/item/test.html
 root /usr/local/nginx/html132;
 #指定欢迎页面,按从左到右顺序查找
 index index.html index.htm;
 }
 }
 #配置虚拟主机192.168.78.133
 server {
 listen 80;
 server_name 192.168.78.133;
 location / {
 root /usr/local/nginx/html133;
 index index.html index.htm;
 }
 }
}

v. 测试

重新启动nginx,观察端口监听状态:

访问http://192.168.78.132/

访问http://192.168.78.133/

4. 最后

以上,就把nginx 基于ip的配置虚拟主机讲完了。后面会继续讲基于域名和端口的配置。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表