Nginx 实现虚拟主机

Posted by 彭楷淳 on 2020-09-08
Estimated Reading Time 2 Minutes
Words 718 In Total
Viewed Times

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


If you like this blog or find it useful for you, you are welcome to comment on it. You are also welcome to share this blog, so that more people can participate in it. If the images used in the blog infringe your copyright, please contact the author to delete them. Thank you !