基于ip
<h1>虚拟主机配置-基于ip</h1>
<ul>
<li>Nginx总结(二)基于ip的虚拟主机配置 </li>
<li><a href="https://www.cnblogs.com/zhangweizhong/p/11378542.html">https://www.cnblogs.com/zhangweizhong/p/11378542.html</a></li>
</ul>
<h2>基于ip的虚拟主机配置</h2>
<ul>
<li>Linux操作系统允许添加IP别名,就是在一块物理网卡上绑定多个lP地址。</li>
<li>这样就能够在使用单一网卡的同一个服务器上运行多个基于IP的虚拟主机。</li>
</ul>
<h2>应用场景</h2>
<ul>
<li>一台nginx服务器绑定两个ip地址
<ul>
<li>192.168.32.132,192.168.32.133</li>
</ul></li>
<li>访问不同的ip请求不同的html目录
<ul>
<li>访问 <a href="http://192.168.32.132">http://192.168.32.132</a> 将访问 192.168.32.132 目录下的html网页</li>
<li>访问 <a href="http://192.168.32.133">http://192.168.32.133</a> 将访问 192.168.32.133 目录下的html网页</li>
</ul></li>
</ul>
<h2>准备环境</h2>
<ul>
<li>创建 192.168.32.132 的虚拟机,保证本地电脑和虚拟网络通畅</li>
</ul>
<h2>绑定多ip</h2>
<ul>
<li>
<p>修改网络配置文件</p>
<pre><code class="language-shell">cd /etc/sysconfig/network-scripts</code></pre>
</li>
<li>
<p>编辑文件内容</p>
<pre><code class="language-nginx">vi ifcfg-ens32
# 注释 BOOTPROTO=dhcp
# BOOTPROTO=dhcp
# 添加绑定ip参数配置
# 绑定ip
IPADDR0=192.168.32.132
PREFIX0=24
IPADDR1=192.168.32.133
PREFIX1=16</code></pre>
</li>
<li>
<p>完整文件配置实例</p>
<pre><code class="language-nginx">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=ens32
UUID=a91d5f57-27c4-4da3-ae32-7f95642714c8
DEVICE=ens32
ONBOOT=yes
# 绑定ip
IPADDR0=192.168.32.132
PREFIX0=24
IPADDR1=192.168.32.133
PREFIX1=16</code></pre>
</li>
</ul>
<h3>保存修改,重启网络</h3>
<pre><code class="language-shell">systemctl restart network</code></pre>
<h2>进行配置</h2>
<ul>
<li>
<p>创建目录</p>
<pre><code class="language-shell">cd /usr/local/nginx/html
mkdir 192.168.32.132
mkdir 192.168.32.133
ls
# 在两个目录下分别创建文件index.html,方便配置成功后测试使用</code></pre>
</li>
<li>
<p>编辑配置文件</p>
<pre><code class="language-shell">cd /usr/local/nginx/conf
cp nginx.conf nginx.conf_bak # 提前备份配置文件
vi nginx.conf</code></pre>
</li>
<li>
<p>配置虚拟主机 192.168.32.132</p>
<pre><code class="language-nginx">server {
# 监听的ip和端口,配置 192.168.32.132:80
listen 80;
# 虚拟主机名称这里配置ip地址
server_name 192.168.32.132;
# 所有的请求都以 / 开始,所有的请求都可以匹配此 location
location / {
# 使用root指令指定虚拟主机目录即网页存放目录
# 比如访问 http://ip/test.html 将找到 /usr/local/nginx/html/192.168.32.132/test.html
# 比如访问 http://ip/item/test.html 将找到 /usr/local/nginx/html/192.168.32.132/item/test.html
root /usr/local/nginx/html/192.168.32.132;
# 指定欢迎页面,按从左到右顺序查找
index index.html index.htm;
}
}</code></pre>
</li>
<li>
<p>配置虚拟主机 192.168.32.133</p>
<pre><code class="language-nginx">server {
listen 80;
server_name 192.168.32.133;
location / {
root /usr/local/nginx/html/192.168.32.133;
index index.html index.htm;
}
}</code></pre>
</li>
</ul>
<h2>测试</h2>
<ul>
<li>
<p>重新启动nginx,观察端口监听状态</p>
<pre><code class="language-shell">systemctl restart nginx
ps aux | grep nginx</code></pre>
</li>
<li>
<p>访问虚拟主机 192.168.32.132</p>
<ul>
<li><a href="http://192.168.32.132">http://192.168.32.132</a></li>
</ul>
</li>
<li>
<p>访问虚拟主机 192.168.32.133</p>
<ul>
<li><a href="http://192.168.32.133">http://192.168.32.133</a></li>
</ul>
</li>
</ul>
<h2>优化配置文件写法</h2>
<ul>
<li>
<p>创建目录</p>
<pre><code class="language-shell">cd /usr/local/nginx/conf
mkdir vhosts</code></pre>
</li>
<li>
<p>编辑配置文件</p>
<pre><code class="language-shell">cd /usr/local/nginx/conf
vi nginx.conf
# 编写内容
include vhosts/*.conf; # server {} 块后写入此代码</code></pre>
</li>
<li>
<p>增加两个虚拟主机配置文件</p>
<pre><code class="language-shell">cd /usr/local/nginx/conf/vhosts
192.168.32.132.conf
192.168.32.133.conf</code></pre>
</li>
<li>
<p>将上边配置虚拟主机内容放到文件中</p>
<ul>
<li>192.168.32.132.conf文件中填写</li>
</ul>
<pre><code class="language-nginx">server {
listen 80;
server_name 192.168.32.132;
location / {
root /usr/local/nginx/html/192.168.32.132;
index index.html index.htm;
}
} </code></pre>
<ul>
<li>192.168.32.133.conf文件中填写</li>
</ul>
<pre><code class="language-nginx">server {
listen 80;
server_name 192.168.32.133;
location / {
root /usr/local/nginx/html/192.168.32.133;
index index.html index.htm;
}
}</code></pre>
</li>
<li>
<p>去除 nginx.conf 中,配置虚拟主机 192.168.32.132 和 192.168.32.133 的内容</p>
</li>
<li>
<p>重新启动nginx,再次进行测试</p>
<pre><code class="language-shell">systemctl restart nginx
ps aux | grep nginx</code></pre>
<p><a href="http://192.168.32.132">http://192.168.32.132</a>
<a href="http://192.168.32.133">http://192.168.32.133</a></p>
</li>
</ul>