什么是Nginx
Nginx是一款高性能的HTTP服务器/反向代理服务器及电子邮件代理服务器。由俄罗斯的程序设计师Igor Sysoev所开发, 官方测试Nginx能够支撑5万并发链接, 并且CPU, 内存等资源消耗却非常低, 运行非常稳定
Nginx的应用场景
HTTP服务器: Nginx是一个HTTP服务可以独立提供HTTP服务。可以做网页静态服务器
虚拟主机: 可以实现在一台服务器虚拟出多个网站。例如个人网站使用的虚拟主机
反向代理, 负载均衡: 当网站的访问量达到一定程度后, 单台服务器不能满足用户的请求时, 需要用多台服务器集群可以使用Nginx做反向代理。并且多台服务器可以平均分担负载, 不会因为某台服务器负载高宕机而某台服务器闲置的情况
使用Docker安装和运行Nginx
使用Docker来安装和运行Nginx, docker-compose.yml配置如下:
version: '3.1'
services:
nginx:
restart: always
image: nginx
container_name: nginx
ports:
- 80:80
volumes:
- ./conf.d:/etc/nginx/conf.d
- ./www:/usr/share/nginx
由于在docker-compose中指定了配置文件, 但其实在启动过程中/conf.d/下面是没有nginx.conf这个问题的, 所以需要从其他地方拷贝一个到/conf.d/下, 下面提供一个最简单的nginx.conf的配置文件
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx;
}
}
Nginx配置文件的结构
#...
events {
# …
}
http {
# …
server {
#...
}
#...
server{
#...
}
}
注: 每个server就是一个虚拟主机
什么是虚拟主机
虚拟主机是一种特殊的软硬件技术, 它可以将网络上的每一台计算机分成多个虚拟主机, 每个虚拟主机可以独立对外提供www服务, 这样就可以实现一台主机对外提供多个web服务, 每个虚拟主机之间是独立的, 互不影响的。
通过Niginx可以实现虚拟主机的配置, Niginx支持三种类型的虚拟主机配置:
基于IP的虚拟主机
基于域名的虚拟主机
基于端口的虚拟主机
基于端口的虚拟主机配置
Niginx对外提供80和8080两个端口监听服务
请求80端口则请求html80目录下的html
请求8080端口则请求html8080目录下的html
创建目录及文件
在/usr/local/docker/nginx/wwwroot目录下创建html80和html8080两个目录, 并分别创建两个index.html文件
配置虚拟主机
修改/usr/local/docker/nginx/conf目录下的nginx.conf配置文件
worker_processes 1;
events{
work_connections 1024;
}
http{
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen: 80;
server_name 192.168.25.132;
location / {
root /usr/share/niginx/wwwroot/html180;
index index.html index.htm
}
server {
listen 8080;
server_name 192.168.25.132;
location / {
root /usr/share/nginx/wwwroot/html8080;
index index.html index.html
}
}