Nginx 实现虚拟主机

彭楷淳发布于 2020-09-08
预计阅读时间 2 分钟
总计 718
浏览

Nginx 简介


Nginx 是一款高性能的 HTTP 服务器、反向代理服务器及电子邮件(IMAP/POP3)代理服务器。官方测试 Nginx 能够支撑 5 万并发链接,并且 CPU、内存等资源消耗却非常低,运行非常稳定。

Nginx 的应用场景


  • HTTP 服务器:Nginx 是一个 HTTP 服务可以独立提供 HTTP 服务。可以做网页静态服务器。
  • 虚拟主机:可以实现在一台服务器虚拟出多个网站。
  • 反向代理 + 负载均衡:当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用 Nginx 做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况。

什么是虚拟主机


虚拟主机是一种特殊的软硬件技术,它可以将网络上的每一台计算机分成多个虚拟主机,每个虚拟主机可以独立对外提供 www 服务,这样就可以实现一台主机对外提供多个 web 服务,每个虚拟主机之间是独立的,互不影响的。

通过 Nginx 可以实现虚拟主机的配置,Nginx 支持三种类型的虚拟主机配置

  • 基于 IP 的虚拟主机
  • 基于域名的虚拟主机
  • 基于端口的虚拟主机

功能需求


Nginx 对外提供 80 和 8080 两个端口监听服务,实现两台虚拟主机,请求 80 端口则访问 html80 目录下的 html 文件,请求 8080 端口则访问 html8080 目录下的 html 文件。

部署 Nginx


使用 Docker Compose 编排部署应用容器。服务器地址:192.168.230.130

/usr/local/docker/nginx/wwwroot 目录下创建 html80html8080 两个目录,并分别创建两个 index.html 文件。

创建 docker-compose.yml

1
2
3
4
5
6
7
8
9
10
11
version: '3.1'
services:
nginx:
restart: always
image: nginx
container_name: nginx
ports:
- 80:80
volumes:
- ./conf/nginx.conf:/etc/nginx/nginx.conf
- ./wwwroot:/usr/share/nginx/wwwroot

/usr/local/docker/nginx/conf 目录下创建 nginx.conf,挂载 Nginx 配置文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
user  nginx;
# 指定使用 CPU 资源数量
worker_processes 1;

events {
# 连接数
worker_connections 1024;
}

http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;

# 虚拟主机一配置
server {
# 指定端口
listen 80;
# 指定 IP (可以是域名)
server_name 192.168.230.130;
location / {
# 虚拟主机内的资源访问路径
root /usr/share/nginx/wwwroot/html8080;
# 首页
index index.html index.htm;
}
}

# 虚拟主机二配置
server {
listen 8080;
server_name 192.168.230.130;
location / {
root /usr/share/nginx/wwwroot/html8080;
index index.html index.htm;
}
}
}

每个 server 节点代表一个虚拟主机,最后启动容器:

1
$ docker-compose up -d

打开浏览器分别访问 http://192.168.230.130http://192.168.230.130:8080

更多干货请移步:https://antoniopeng.com


如果你喜欢这个博客或发现它对你有用,欢迎你点击右下角 “OPEN CHAT” 进行评论。也欢迎你分享这个博客,让更多的人参与进来。如果在博客中使用的图片侵犯了您的版权,请联系博主删除它们。谢谢你!