前言
Nginx使用入门,让你的闲置云服务器用起来~
Nginx能干什么?
Nginx是一款开源的高性能Web服务器和反向代理服务器,具有以下主要功能:
Web服务器:Nginx可以作为一个独立的Web服务器来提供静态内容和动态内容的服务。它支持处理HTTP、HTTPS、HTTP/2和WebSocket等协议,具有高并发处理能力和低资源消耗。
反向代理:Nginx作为反向代理服务器,可以接收客户端请求并将其转发到后端的多个服务器,起到负载均衡和高可用性的作用。它能够智能地分配请求负载,提供更好的性能和可靠性。
负载均衡:Nginx能够在多个后端服务器之间分发请求,实现负载均衡。通过智能地将请求分配给不同的服务器,可以提高系统的整体性能和可伸缩性。
HTTP缓存:Nginx支持对静态和动态内容进行缓存,减少对后端服务器的请求,提高响应速度和吞吐量。它可以根据设置的缓存规则,缓存经常访问的内容,并提供快速的响应。
安全性:Nginx具有内置的安全功能,如反向代理防御(Reverse Proxy Defense)和请求限制(Rate Limiting),以保护网站免受恶意请求和DDoS攻击。
SSL/TLS加密:Nginx支持SSL/TLS协议,可以进行安全的加密通信,并提供HTTPS协议的支持。它可以配置和管理证书,实现安全的数据传输。
动态模块:Nginx支持模块化的架构,可以通过添加第三方模块扩展其功能。这使得Nginx具有更多的扩展性和灵活性,可以根据具体需求进行定制和配置。
本文先从最常用的Web服务器开始。
基于Docker部署Nginx
通过Docker部署Nginx对于我们的学习更方便,也提供了更好的隔离性。下面是通过docker启动Nginx的大致操作流程:
1 | # 拉取镜像 |
Web服务器应用举例
下面,基于上述基本流程,我们来实现一些Web服务器的实例。
省略拉取镜像~
1. 图床
1 | # 创建配置文件目录 |
2. 文件服务器
1 | # 创建配置文件目录 |
注意:
- 使用alias时目录名后面一定要加
/
。 - 一般情况下,在
location /
中配置root,在location /other
中配置alias。
3. Web应用部署
一样的逻辑,这里只提供一个配置文件参考: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
40
41
42
43
44
45
46
47
48
49
50
51
52worker_processes 1;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
# 事件处理器配置
events {
worker_connections 1024;
}
# HTTP服务器配置
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
gzip on;
gzip_min_length 1k; # 设置允许压缩的页面最小字节数
gzip_buffers 4 16k; # 用来存储 gzip 的压缩结果
gzip_http_version 1.1; # 识别 HTTP 协议版本
gzip_comp_level 2; # 设置 gzip 的压缩比 1-9。1 压缩比最小但最快,而 9 相反
gzip_types gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; # 指定压缩类型
gzip_proxied any; # 无论后端服务器的 headers 头返回什么信息,都无条件启用压缩
# 前端静态文件服务器
server {
listen 80;
server_name example.com;
root /path/to/frontend/dist;
location / {
try_files $uri $uri/ /index.html;
}
}
# 后端API代理
server {
listen 80;
server_name api.example.com;
location /api/ {
proxy_pass http://ip:port/api/; ## proxy_pass 需要设置为后端项目所在服务器的 IP
# 设置代理请求的头信息,以便在转发请求时传递给后端服务器
proxy_set_header Host $http_host; # 设置代理请求的Host头,将其设置为与客户端请求中的Host头一致
proxy_set_header X-Real-IP $remote_addr; # 将客户端真实IP地址作为X-Real-IP头发送给后端服务器
proxy_set_header REMOTE-HOST $remote_addr; # 将客户端IP地址作为REMOTE-HOST头发送给后端服务器
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 将客户端IP地址添加到X-Forwarded-For头中,以便后端服务器可以了解请求的真实客户端IP地址。
}
}
}
后记
首发于 silencezheng.top,转载请注明出处。