阿里云有一批服务器又要续费了;申请经费时老板问能不能省着点;好吧现在经济不景气;大家都不容易;那就并掉一些访问量很小静态网站应用;释放几台机器;一年也能省掉万把块钱呢;具体怎么做呢;请看下文。
虚拟主机也称网站空间;指把一台硬件服务器划分多个虚拟空间;在一台机器上一个nginx服务可以运行多个网站应用;更上一层的就是虚拟机的概念了;虚拟机和虚拟主机是两个概念;虚拟机是在一台硬件主机上划分多个独立的操作系统;虚拟主机是划分多个网站服务。
首先装好一个干净的Nginx用来做实验。
# centos下nginx安装 yum install nginx # 启动 systemctl start nginx # 确认启动是否成功 netstat -anp | grep :80 # 启动成功后会在80端口上进行监听 # 0 0.0.0.0:80;所有服务安装后 # 都要关注一下这个输出;是否允放 # 远程访问;0 0.0.0.0表示 # 允许所主机;127.0.0.1表示只允许 # 本机访问;那就得去修改配置文件
启动后;在浏览器输入机器公网IP访问;如果不出现Nginx欢迎页的话;那一般就是云服务访问规则入方向80端口没有开放。
云服务平台的访问规则与Iptablesfirewalld区别;在我的理解中云服务平台的访问规则应该是配置在路由器交换机中可以针对一组机器进行配置;相当于第一个门;而iptables是单机网卡上做防火墙相当于第二个门;你要访问该主机服务;必须通过两道门。
1、基于IP配置虚拟主机
因为机器上没有两块网卡两个IP;那我们就配置IP别名通过内网访问来测试.
内网IP;172.16.79.224
IP别名;172.16.79.220
# IP别名配置 ifconfig eth0:1 172.16.79.220 broadcast 172.16.79.255 netmask 255.255.240.0 up route add -host 172.16.79.220 dev eth0:1
nginx.conf
server{ listen 80; server_name 172.16.79.224; #主页内容 172.16.79.224 root /var/www/html/224; } server{ listen 80; #主页内容 172.16.79.220 server_name 172.16.79.220; root /var/www/html/220; }
测试是否配置成功 systemctl restart nginx wget 172.16.79.224 返回内容224 wget 172.16.79.220 返回内容220
server{ listen 80; server_name qingcai1.vanmilk.com; root /var/www/html/qingcai1; } server{ listen 80; server_name qingcai2.vanmilk.com qingcai3.vanmilk.com; root /var/www/html/qingcai2; }
本地机器配置hosts 118.178.255.158 qingcai1.vanmilk.com qingcai2.vanmilk.com qingcai3.vanmilk.com 浏览器访问 http://qingcai1.vanmilk.com/ # 返回qingcai1下内容 访问 http://qingcai2.vanmilk.com/ http://qingcai3.vanmilk.com/ # 返回qingcai2下内容
server{ listen 8083; root /var/www/html/qingcai1; } server{ listen 8084; root /var/www/html/qingcai2; }
配置后重启nginx报错;查日志发现 2021/08/05 06:48:20 [emerg] 30233#30233: bind() to 0.0.0.0:8081 failed (13: Permission denied) 用netstat 查端口并没有被占用; 是因为启用了SELinux;先直接关闭 SELinux setenforce 0。 浏览器访问 http://118.178.255.158:8081/ # 返回8081内容 http://118.178.255.158:8082/ # 返回8082内容
将公司一个访问量很小的静态网站和一个后端管理应用服务部署在同一台机器
混合了IP与DNS配置。
# 静态网站 server{ listen 80; server_name www.vanmilk.com.au; location / { root /home/ec2-user/www/html; } } server { listen 80; server_name 54.79.211.*; # 后端接口应用转发;解决前后端分离跨域 location ^~/api/ { proxy_pass http://54.79.211.*:8098/; } # 应用前端 location / { root /home/ec2-user/adm/; } }