详解Nginx 虚拟主机配置的三种方式(基于IP)
Nginx配置虚拟主机支持3种方式:基于IP的虚拟主机配置,基于端口的虚拟主机配置,基于域名的虚拟主机配置。
详解Nginx虚拟主机配置的三种方式(基于端口)https://www.nhooo.com/article/14977.htm
详解Nginx虚拟主机配置的三种方式(基于域名)https://www.nhooo.com/article/14978.htm
1、基于IP的虚拟主机配置
如果同一台服务器有多个IP,可以使用基于IP的虚机主机配置,将不同的服务绑定在不同的IP上。
1.1假设服务器有个IP地址为192.168.2.150,首先使用ifconfig在同一个网络接口上绑定其他3个IP。
[root@localhost~]#ifconfigens33:1192.168.2.151/24up [root@localhost~]#ifconfigens33:2192.168.2.152/24up [root@localhost~]#ifconfigens33:3192.168.2.153/24up [root@localhost~]#ifconfig ens33:flags=4163mtu1500 inet192.168.2.106netmask255.255.255.0broadcast192.168.2.255 inet6fe80::2a8d:be6:a4a8:ea0prefixlen64scopeid0x20 ether00:0c:29:16:90:aetxqueuelen1000(Ethernet) RXpackets1220bytes87955(85.8KiB) RXerrors0dropped0overruns0frame0 TXpackets206bytes23755(23.1KiB) TXerrors0dropped0overruns0carrier0collisions0 ens33:1:flags=4163 mtu1500 inet192.168.2.151netmask255.255.255.0broadcast192.168.2.255 ether00:0c:29:16:90:aetxqueuelen1000(Ethernet) ens33:2:flags=4163 mtu1500 inet192.168.2.152netmask255.255.255.0broadcast192.168.2.255 ether00:0c:29:16:90:aetxqueuelen1000(Ethernet) ens33:3:flags=4163 mtu1500 inet192.168.2.153netmask255.255.255.0broadcast192.168.2.255 ether00:0c:29:16:90:aetxqueuelen1000(Ethernet) lo:flags=73 mtu65536 inet127.0.0.1netmask255.0.0.0 inet6::1prefixlen128scopeid0x10 looptxqueuelen1(LocalLoopback) RXpackets72bytes6252(6.1KiB) RXerrors0dropped0overruns0frame0 TXpackets72bytes6252(6.1KiB) TXerrors0dropped0overruns0carrier0collisions0
1.23个IP对应的域名如下,配置主机的host文件便于测试
[root@localhost~]#vim/etc/hosts [root@localhost~]#cat/etc/hosts 127.0.0.1localhostlocalhost.localdomainlocalhost4localhost4.localdomain4 ::1localhostlocalhost.localdomainlocalhost6localhost6.localdomain6 192.168.2.151www.test151.com 192.168.2.152www.test152.com 192.168.2.153www.test153.com
可以模拟实现DNS轮询的情况。
附:设置完hosts文件后一定要记得执行以下命令使其生效
1、windows下cmd进入命令行
C:\Users\1234>ipconfig/flushdns WindowsIP配置 已成功刷新DNS解析缓存。
1.3建立虚拟主机存放网页的根目录,并创建首页文件index.html
[root@localhost/]#mkdir-p/data/www [root@localhost/]#cd/data/www [root@localhostwww]#mkdir151 [root@localhostwww]#mkdir152 [root@localhostwww]#mkdir153 [root@localhostwww]#echo"192.168.2.151">151/index.html [root@localhostwww]#echo"192.168.2.152">152/index.html [root@localhostwww]#echo"192.168.2.153">153/index.html [root@localhostwww]#ls 151152153
1.4修改nginx.conf,将虚拟主机配置文件包含进主文件
[root@localhost/]#cd/usr/local/nginx/conf/ [root@localhostconf]#ls fastcgi.conffastcgi_paramskoi-utfmime.typesnginx.confscgi_paramsuwsgi_paramswin-utf fastcgi.conf.defaultfastcgi_params.defaultkoi-winmime.types.defaultnginx.conf.defaultscgi_params.defaultuwsgi_params.default [root@localhostconf]#vimnginx.conf
在nginx.conf文件末尾加入以下配置
#在http段中找到以下内容并删除每行前面的“#” log_formatmain'$remote_addr-$remote_user[$time_local]"$request"' '$status$body_bytes_sent"$http_referer"' '"$http_user_agent""$http_x_forwarded_for"'; #配置文件结尾的最后一个“}”之前加入以下语句,如下所示 includevhost/*.conf; }
1.5编辑每个IP的配置文件(每个虚拟主机的配置文件)
[root@localhostconf]#mkdir-pvhost [root@localhostconf]#cdvhost/ [root@localhostvhost]#catwww.test151.conf server{ listen192.168.2.151:80; #配置成实际的域名,每个虚拟主机的配置文件域名都相同 #server_namewww.test.com; access_log/data/logs/www.test151.com.logmain; error_log/data/logs/www.test151.com.error.log; location/{ root/data/www/151; indexindex.htmlindex.htm; } } [root@localhostvhost]#catwww.test152.conf server{ listen192.168.2.152:80; #配置成实际的域名,每个虚拟主机的配置文件域名都相同 #server_namewww.test.com; access_log/data/logs/www.test152.com.logmain; error_log/data/logs/www.test152.com.error.log; location/{ root/data/www/152; indexindex.htmlindex.htm; } } [root@localhostvhost]#catwww.test153.conf server{ listen192.168.2.153:80; #配置成实际的域名,每个虚拟主机的配置文件域名都相同 #server_namewww.test.com; access_log/data/logs/www.test153.com.logmain; error_log/data/logs/www.test153.com.error.log; location/{ root/data/www/153; indexindex.htmlindex.htm; } }
1.6创建日志文件,否则无法启动nginx
[root@localhost/]#mkdir-p/data/logs [root@localhost/]#touch/data/logs/www.test151.com.log [root@localhost/]#touch/data/logs/www.test151.com.error.log [root@localhost/]#touch/data/logs/www.test152.com.log [root@localhost/]#touch/data/logs/www.test152.com.error.log [root@localhost/]#touch/data/logs/www.test153.com.log [root@localhost/]#touch/data/logs/www.test153.com.error.log [root@localhost/]#ls/data/logs/ www.test151.com.error.logwww.test152.com.error.logwww.test153.com.error.log www.test151.com.logwww.test152.com.logwww.test153.com.log
1.7先测试配置文件然后再启动nginx
[root@localhost/]#cd/usr/local/nginx/sbin/ [root@localhostsbin]#./nginx-t nginx:theconfigurationfile/usr/local/nginx/conf/nginx.confsyntaxisok nginx:configurationfile/usr/local/nginx/conf/nginx.conftestissuccessful #启动nginx [root@localhostsbin]#./nginx
1.8测试文件
[root@localhostsbin]#curlwww.test151.com 192.168.2.151 [root@localhostsbin]#curlwww.test152.com 192.168.2.152 [root@localhostsbin]#curlwww.test153.com 192.168.2.153
附:配置过程中出现的问题
1、测试配置文件时出现的问题
[root@localhostsbin]#./nginx-t nginx:[emerg]unexpected"}"in/usr/local/nginx/conf/nginx.conf:122 nginx:configurationfile/usr/local/nginx/conf/nginx.conftestfailed
解决方法:下面语句忘记加分号
includevhost/*.conf;
2、使用curlwww.test*.com测试时总是访问到相同的结果
解决方法:不要将IP地址写在server_name后面,server_name后面只能添加域名。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。