Nginx搭建Web服务器

Catalogue
  1. 1. Nginx搭建Web服务器
    1. 1.1. Nginx 简介
    2. 1.2. 使用Nginx搭建静态 Web服务
      1. 1.2.1. 配置虚拟主机
      2. 1.2.2. 配置反向代理
  2. 2. 参考资料

Nginx搭建Web服务器

本文将简单介绍Nginx的基础使用,包括两部分内容:nginx搭建web服务和配置nginx反向代理,后面会慢慢更新关于nginx的其他内容~

Nginx 简介

Nginx是一个开源、轻量、快速、可扩展的Web服务器

可配置能力弱于Apache,适用于大流量、高并发场景

可与Apache共用,Apache处理动态内容,Nginx处理静态内容

本文使用环境:

  • Ubuntu Server 20.04 LTS

使用Nginx搭建静态 Web服务

安装Nginx:

1
sudo apt install nginx

配置虚拟主机

Nginx配置目录在/etc/nginx,常用的配置文件:

1
2
3
4
nginx.conf		# 主配置文件
sites-available # 可用的虚拟主机
sites-enabled # 启用的虚拟主机
snippets # 需要复用的配置片段

nginx.conf 配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
user www-data;
# nginx 进程账号
worker_processes auto;
# 进程数
worker_connections 768;
# 每个进程连接数
sendfile on;
# 内核实现(静态性能主要来源)
tcp_nopush on;
# 优化发包大小(多次请求一起回应)
tcp_nodelay on;
# 优化包延时
keepalive_timeout 65;
# 每次连接的保持时间
types_hash_max_size 2048;
# mime 类静态内容Hash表大小
gzip on;
# 压缩(加快传输速度)

此配置文件有六部分组成

  1. main:用于进行nginx全局信息的配置
  2. events:用于nginx工作模式的配置
  3. http:用于进行http协议信息的一些配置
  4. server:用于进行服务器访问信息的配置
  5. location:用于进行访问路由的配置
  6. upstream:用于进行负载均衡的配置

虚拟主机配置

用到的几个目录:

  • 可用站点:/etc/nginx/sites-available/
  • 启用站点:/etc/nginx/sites-enabled/
  • Web目录:/var/www/html/

基本的站点配置如下:

1
2
3
4
5
6
7
8
9
10
# /etc/nginx/sites-available/test.com
server{
listen 8080; # 监听8080端口
server_name test.com; # 用户访问此地址由该虚拟主机进行处理
# 虚拟主机名称可用通配符*和正则表达式,也可指定多个名称
root /var/www/html; # Web根目录
location / # 因为所有请求都是/开头,所以这里表示匹配所有请求
index index.html # 指定首页
try_files $uri $uri/ =404;
}

配置反向代理

配置反向代理需要在server段里面的location加上proxy_pass http://ip:端口

下面以一个例子来展示效果:这里我用apache2在8080端口开启Web服务,我们通过nginx反向代理来将访问80端口的请求转发到8080端口。

1
2
3
4
5
6
7
8
9
10
11
12
# /etc/nginx/sites-available/test
server {
listen 80 default_server;
listen [::]:80 default_server;
index index.html index.htm index.nginx-debian.html;
# server_name _;
location / {
proxy_pass http://192.168.193.131:8080;
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}

正常情况下8080端口的内容:

image-20200607085429594

反向代理后访问的80端口:

image-20200607085442386

参考资料