资讯

展开

Nginx虚拟主机配置

作者:快盘下载 人气:

一、背景

阿里云有一批服务器又要续费了;申请经费时老板问能不能省着点;好吧现在经济不景气;大家都不容易;那就并掉一些访问量很小静态网站应用;释放几台机器;一年也能省掉万把块钱呢;具体怎么做呢;请看下文。

二、虚拟主机概念

虚拟主机也称网站空间;指把一台硬件服务器划分多个虚拟空间;在一台机器上一个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

2、基于域名配置虚拟主机

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下内容

3、基于端口配置虚拟主机

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/;
   }
}


加载全部内容

相关教程
猜你喜欢
用户评论
快盘暂不提供评论功能!