基于nginx部署网站

虚拟主机指的就是一个独立的站点,具有独立的域名,有完整的www服务,例如网站、FTP、邮件等。

Nginx支持多虚拟主机,在一台机器上可以运行完全独立的多个站点。

一、为什么配置虚拟主机

一些草根流量站长,常会搭建个人站点进行资源分享交流,并且可能有多个不同业务的站点,如果每台服务器只运行一个网站,那么将造成资源浪费,成本浪费。

利用虚拟主机的功能,就不用为了运行一个网站而单独配置一个Nginx服务器,或是单独再运行一组Nginx进程。

虚拟主机可以在一台服务器,同一个Nginx进程上运行多个网站。

nginx.conf主配置文件中,最简单的一段虚拟主机配置如下

1.单虚拟主机(静态资源网站)

nginx.conf

user  www;
worker_processes auto; error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid; events {
worker_connections 1024;
} http {
include /etc/nginx/mime.types;
default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on;
#tcp_nopush on; keepalive_timeout 65; #gzip on; include /etc/nginx/conf.d/*.conf;
}

yuchaoit.conf

利用include功能导入其他目录下的配置文件,便于管理多个网站配置,防止全部塞进一个配置文件,难以维护。

[root@web-9 /etc/nginx/conf.d]#grep -Ev '^$|#' /etc/nginx/conf.d/yuchaoit.conf
server {
listen 80;
server_name localhost;
charset utf-8;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}

查看主页

静态资源如图片等

wget -O 1.gif https://p5.itc.cn/images01/20210329/1ddda8eb9945487f9bdfe951e75a1737.gif

wget -O 2.gif https://p1.itc.cn/images01/20210329/f9a37ab55ba04ff692bccc61bc1cd829.gif

静态文本数据

若是text类型,nginx能够提供读取;

若是其他类型,nginx提供下载功能;

2.基于IP多虚拟主机

Linux操作系统都能够支持给网卡绑定多个IP地址,可以使得一块网卡上运行多个基于IP的虚拟主机。

[root@web-9 /usr/share/nginx/html]#ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.0.0.9 netmask 255.255.255.0 broadcast 10.0.0.255
ether 00:0c:29:ca:e3:88 txqueuelen 1000 (Ethernet)
RX packets 180107 bytes 156489622 (149.2 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 109642 bytes 14407514 (13.7 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 添加ip
ip addr add 10.0.0.77/24 dev eth0 [root@web-9 /usr/share/nginx/html]#ip addr add 10.0.0.77/24 dev eth0
[root@web-9 /usr/share/nginx/html]#ping 10.0.0.77
PING 10.0.0.77 (10.0.0.77) 56(84) bytes of data.
64 bytes from 10.0.0.77: icmp_seq=1 ttl=64 time=0.019 ms
64 bytes from 10.0.0.77: icmp_seq=2 ttl=64 time=0.021 ms
修改yuchaoit.conf支持多虚拟主机,编写多个server{}标签即可。 [root@web-9 /usr/share/nginx/html]#grep -Ev '^$|#' /etc/nginx/conf.d/yuchaoit.conf
server {
listen 10.0.0.9:80;
server_name localhost;
charset utf-8;
location / {
root /usr/share/nginx/html/movie;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
server {
listen 10.0.0.77:80;
server_name localhost;
charset utf-8;
location / {
root /usr/share/nginx/html/game;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
创建测试数据 [root@web-9 /usr/share/nginx/html]#mkdir -p /usr/share/nginx/html/{movie,game}
[root@web-9 /usr/share/nginx/html]#echo '《绝命毒师》' > /usr/share/nginx/html/movie/index.html
[root@web-9 /usr/share/nginx/html]#echo '《王者荣耀》' > /usr/share/nginx/html/game/index.html
重启nginx,访问测试 [root@web-9 /usr/share/nginx/html]#systemctl reload nginx [root@web-9 /usr/share/nginx/html]#curl 10.0.0.9
《绝命毒师》
[root@web-9 /usr/share/nginx/html]#
[root@web-9 /usr/share/nginx/html]#curl 10.0.0.77
《王者荣耀》

3.基于域名的多虚拟主机

基于多IP的虚拟主机可能会造成IP地址不足的问题,如果没有特殊需求,更常用的是基于多域名的形式。

只需要你单独配置DNS服务器,将主机名对应到正确的IP地址,修改Nginx配置,可以识别到不同的主机即可,这样就可以使得多个虚拟主机用同一个IP,解决了IP不足的隐患。

需要先做好域名解析

未配置dns服务器的话,修改hosts即可

C:\Windows\System32\drivers\etc

写入解析
C:\Windows\System32\drivers\etc 10.0.0.9 movie.yuchaoit.cn
10.0.0.9 www.yuchaoit.cn

yuchaoit.conf

[root@web-9 /usr/share/nginx/html]#grep -Ev '^$|#' /etc/nginx/conf.d/yuchaoit.conf

server {
listen 80;
server_name www.yuchaoit.cn;
charset utf-8;
location / {
root /usr/share/nginx/html/game;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
server {
listen 80;
server_name movie.yuchaoit.cn;
charset utf-8;
location / {
root /usr/share/nginx/html/movie;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}

重启查看多域名解析的情况

[root@web-9 /usr/share/nginx/html]#systemctl restart nginx

4.基于多端口的虚拟主机

基于端口的配置在生产环境比较少见,用于特殊场景,例如公司内部测试平台网站,使用特殊端口的后台,OA系统、网站后台,CRM后台等。

案例:运行基于80、81端口的虚拟主机运行

yuchaoit.conf

[root@web-9 /usr/share/nginx/html]#grep -Ev '^$|#' /etc/nginx/conf.d/yuchaoit.conf
server {
listen 80;
server_name www.yuchaoit.cn;
charset utf-8;
location / {
root /usr/share/nginx/html/game;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
server {
listen 88;
server_name movie.yuchaoit.cn;
charset utf-8;
location / {
root /usr/share/nginx/html/movie;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}

重启查看多端口虚拟主机

5.虚拟主机配置文件优化(include)

如果所有配置都写入一个文件,维护起来很麻烦,修改错了某一个conf文件,导致所有页面都报错,因此拆分为单个的文件更为合适。

/etc/nginx/nginx.conf主文件

[root@web-9 /usr/share/nginx/html]#grep -Ev '^$|#' /etc/nginx/nginx.conf
user www;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
keepalive_timeout 65;
include /etc/nginx/conf.d/*.conf; # 这里指定了导入的conf路径
}

www页面配置文件

[root@web-9 /etc/nginx/conf.d]#cat www.yuchaoit.conf
server {
listen 80;
server_name www.yuchaoit.cn;
charset utf-8;
location / {
root /usr/share/nginx/html/game;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}

movie页面配置文件

[root@web-9 /etc/nginx/conf.d]#cat movie.yuchaoit.conf
server {
listen 80;
server_name movie.yuchaoit.cn;
charset utf-8;
location / {
root /usr/share/nginx/html/movie;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}

创建对应的网页数据

[root@web-9 /etc/nginx/conf.d]#echo '我是www页面,今天开心吗 我的朋友' > /usr/share/nginx/html/game/index.html
[root@web-9 /etc/nginx/conf.d]#
[root@web-9 /etc/nginx/conf.d]#echo "我是movie页面,未来可期是一个积极向上的状态,种下辛苦的种子,来年收获美好" > /usr/share/nginx/html/movie/index.html

查看页面

nginx虚拟主机实战的更多相关文章

  1. Nginx网络架构实战学习笔记(一):Nginx简介、安装、信号控制、nginx虚拟主机配置、日志管理、location 语法、Rewrite语法详解

    文章目录 nginx简介 nginx安装 nginx信号控制 nginx虚拟主机配置 日志管理 location 语法 精准匹配的一般匹配 正则匹配 总结 Rewrite语法详解 nginx简介 Ng ...

  2. nginx虚拟主机配置

    nginx虚拟主机配置   虚拟主机的概念虚拟主机,就是把一台物理服务器划分成多个"虚拟"的服务器,每一个虚拟主机都可以有独立的域名和独立的目录nginx虚拟主机的配置nginx的 ...

  3. Apache与Nginx虚拟主机设置(多域名和多端口的区别)

    为了方便管理虚拟主机,应该尽量少修改主配置文件http.conf或者nginx.conf,大部分修改变更都在虚拟主机片配置文件httpd- vhost.conf或者vhost.conf中完成,这样有利 ...

  4. Nginx高性能服务器安装、配置、运维 (5) —— Nginx虚拟主机配置

    六.Nginx虚拟主机配置 建立基于域名的虚拟主机: (1)建立基于域名的虚拟主机配置文件(以abc.com为例): (2)更改虚拟主机配置文件: 更改配置如下(更改部分即可): server { l ...

  5. Nginx教程(二) Nginx虚拟主机配置

    Nginx教程(二) Nginx虚拟主机配置 1 虚拟主机管理 1.1 Nginx管理虚拟主机 虚拟主机使用的是特殊的软硬件技术,它把一台运行在因特网上的服务器主机分成一台台“虚拟”的主机,每台虚拟主 ...

  6. 配置Nginx虚拟主机

    实验环境 一台最小化安装的CentOS 7.3虚拟机 配置基本环境 1. 安装nginx yum install -y epel-* yum isntall -y nginx vim 2. 建立虚机主 ...

  7. Nginx教程--02.Nginx虚拟主机的配置

    1.Nginx虚拟主机的配置 1.1 在conf目录下,使用命令 : vim nginx.conf 对上图解释: //全局区 worker _processes 1; //表示当前有1个工作的子进程, ...

  8. php管理nginx虚拟主机shell脚本

    使用php作为shell脚本是一件很方便的事情.理所当然,我们可以使用php脚本来管理 nginx虚拟主机,下面是笔者的 脚本 文件供各位参考 代码如下 复制代码 #!/usr/bin/php -q& ...

  9. Nginx 虚拟主机 VirtualHost 配置

    Nginx 是一个轻量级高性能的 Web 服务器, 并发处理能力强, 对资源消耗小, 无论是静态服务器还是小网站, Nginx 表现更加出色, 作为 Apache 的补充和替代使用率越来越高. 我在& ...

  10. Nginx虚拟主机配置教程

    说明:配置之前先把域名解析到服务器IP地址上 站点1:bbs.osyunwei.com  程序所在目录/data/osyunwei/bbs 站点2:sns.osyunwei.com  程序所在目录/d ...

随机推荐

  1. 基于 EventBridge 构建 SaaS 应用集成方案

    ​简介:事件源是事件驱动的基石,如何获取更多事件源也是 EventBridge 一直在探索和尝试的方向.针对市场上其他云厂商和垂直领域的 Saas 服务,EventBridge 发布了 HTTP So ...

  2. [Nova] belongsTo, belongsToMany 当前页动态 dependsOn 其它 fields, nova-belongs-to-dependency, belongs-to-many-field-nova

    nova-belongs-to-dependency 例子: use Manmohanjit\BelongsToDependency\BelongsToDependency; ... return [ ...

  3. 超级好用的 HBase GUI 工具分享

    超级好用的 HBase GUI 工具分享 你是否曾为 HBase 数据管理而苦恼?别担心,这一款超级好用的 HBase GUI (HBase Assistant)工具,让您在大数据世界中游刃有余.不再 ...

  4. RT-Thread 运行时常见错误

    一.空线程栈较小 现象: 现象一: 现象二: 原因: 从RT-Thread文章中心可知,空闲线程是不能被挂起的,官方文档说明如下图所示: 注意:必须保证空闲线程的栈空间足够,否则空闲线程内存溢出后,也 ...

  5. LLM优化:开源星火13B显卡及内存占用优化

    1. 背景 本qiang~这两天接了一个任务,部署几个开源的模型,并且将本地经过全量微调的模型与开源模型做一个效果对比. 部署的开源模型包括:星火13B,Baichuan2-13B, ChatGLM6 ...

  6. ADOBE FORM的一些相关资料

    虽然很多人觉得打印程序的开发很无聊(我也这么想),但在实际工作中,打印算是比较有意义的工作,所以还是值得学习的. 之前翻译过几篇Adobe Form的文章,其中的内容,可以帮助创建一些简单的打印示例, ...

  7. 如何禁用IntelliJ IDEA的LightEdit模式

    更新pycharm之后发现有了个新功能,默认打开文件的时候会单独打开一个窗口,以文本编辑的模式打开,而不是用项目模式.这种打开方式被称为LightEdit Mode.效果如下, 可以注意到窗口很简洁, ...

  8. UE4 C++调用手柄震动

    近期封装输入相关逻辑,简单归纳下. 蓝图实现 内容界面右键Miscellaneous->Force Feedback Effect,创建力反馈对象并填写相关参数: 然后在蓝图中用Spawn Fo ...

  9. 推荐一款微信公众平台Python开发神器!

    1.引言 在当今数字化时代,微信公众平台成为了企业和个人连接用户的重要渠道.为了高效地管理和与用户互动,开发者需要一个强大而灵活的工具. Weixin-Python 正是这样一个为微信公众平台量身打造 ...

  10. pageoffice 5.x升级到pageoffice 6.x的关键步骤

    Vue+Springboot前后端分离项目 将后端Springboot项目中pom.xml文件中对于pageoffice的jar引用升级成6.0版本,以maven中央仓库(https://mvnrep ...