Nginx 使用手册

Posted by 谌中钱 on 2026-03-09

1 简介

Nginx 是一个 HTTP Web 服务器、反向代理、 内容缓存、负载均衡器、 TCP/UDP 代理服务器、 和邮件代理服务器。

2 安装

2.1 CentOS 9 环境

2.1.1 Docker 方式

 1# 1 创建文件夹,用来存放 外部挂载文件
 2mkdir -p /usr/local/src/nginx/conf/certs
 3mkdir -p /usr/local/src/nginx/logs
 4mkdir -p /usr/local/src/nginx/html
 5cd /usr/local/src/nginx
 6
 7
 8
 9# 2 准备挂载文件
10# 创建挂载配置文件 ./conf/nginx.conf
11# SSH证书存放到   ./conf/certs
12# 创建容器构建文件 ./docker-compose.yml
13
14
15
16# 3 创建启动容器
17docker compose up -d
2.1.1.1 挂载配置文件

./conf/nginx.conf:

  1worker_processes  1;
  2
  3events {
  4    worker_connections  1024;
  5}
  6
  7http {
  8    include       mime.types;
  9    default_type  application/octet-stream;
 10
 11    sendfile        on;
 12
 13    keepalive_timeout  65;
 14    
 15    proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:100m inactive=60m max_size=1g use_temp_path=off;
 16
 17    # 开启gzip
 18    gzip  on;
 19    gzip_types text/plain text/css application/json application/javascript text/xml application/xml;
 20    gzip_min_length 1024; # 设置最小压缩数据大小,小于该值的数据将不进行压缩
 21    gzip_comp_level 5; # 设置压缩级别,1 为最快压缩,9 为最高压缩率(建议设置为 4~6)
 22
 23    gzip_buffers 16 8k; # 设置用于存储压缩数据的缓冲区数量和大小
 24    gzip_http_version 1.1; # 仅对支持 HTTP/1.1 或更高版本的客户端启用 Gzip 压缩
 25    gzip_vary on; # 启用 Vary 响应头,告知缓存代理服务器对不同编码方式进行缓存分离处理
 26    gzip_static on; # 启用对预生成 .gz 文件的直接传输支持,减少服务器实时压缩负担
 27    gzip_disable "msie6"; # 禁用对特定客户端(如 IE6)的 Gzip 支持,避免兼容性问题
 28    gzip_proxied any; # 指定在代理场景下是否启用压缩(如 any 表示对所有请求启用压缩)
 29    
 30
 31    upstream blog_server {
 32        ip_hash;
 33        server 172.17.0.1:81 max_fails=3 fail_timeout=30s;
 34        
 35        keepalive 32; # 保持连接数,减少每次请求的连接开销
 36
 37        # max_fails 服务器失败的最大次数
 38        # fail_timeout 每台服务器失败的超时时间
 39    }
 40    
 41    upstream twikoo_server {
 42        ip_hash;
 43        server 172.17.0.1:82 max_fails=3 fail_timeout=30s;
 44        
 45        keepalive 32;
 46    }
 47
 48    upstream ctw_server {
 49        ip_hash;
 50        server 172.17.0.1:90 max_fails=3 fail_timeout=30s;
 51        
 52        keepalive 32;
 53    }
 54
 55    server {
 56        listen 80;
 57        server_name templechann.com www.templechann.com climbtw.com www.climbtw.com;
 58        # rewrite ^(.*)$ https://$server_name$1 permanent; # permanent,301 永久重定向,更新 url
 59        return 301 https://$server_name$request_uri; # 重定向使用 return 效率更高
 60    }
 61
 62    # 通过 ip 访问的话,优先匹配 显式标记为 default_server 的 server,如果没有则 使用第一个 server
 63    # 这里设置下,通过 ip 访问的话,跳到博客容器
 64    server {
 65        listen 80 default_server;
 66        server_name _;
 67        # rewrite ^(.*)$ https://$server_name$1 permanent; # permanent,301 永久重定向,更新 url
 68        return 301 https://templechann.com$request_uri; # 重定向使用 return 效率更高
 69    }
 70    
 71    server {
 72        listen       443 ssl;
 73        server_name  templechann.com www.templechann.com;
 74
 75        ssl_certificate      /etc/nginx/certs/templechann.com_bundle.pem;
 76        ssl_certificate_key  /etc/nginx/certs/templechann.com.key;
 77
 78        ssl_session_cache    shared:SSL:1m;
 79        
 80        ssl_session_timeout  5m;
 81        # 请按照以下协议配置
 82        ssl_protocols TLSv1.2 TLSv1.3; 
 83        # 请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
 84        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; 
 85        ssl_prefer_server_ciphers on;
 86
 87        # 系统临时维护
 88        # rewrite ^(.*)$ /maintainace.html break; # break,地址栏 url 不变
 89        # location = /maintainace.html {
 90        #     root html;
 91        # }
 92
 93        # location / {
 94        #     root   html;
 95        #     # try_files $uri $uri/ /index.html; # 解决单页应用 history 路由 404 的问题
 96        #     index  index.html index.htm;
 97        # }
 98
 99        # 反向代理
100        location / {
101            proxy_pass http://blog_server;
102            
103            proxy_cache my_cache;
104            proxy_set_header Host $host;
105            proxy_set_header X-Real-IP $remote_addr;
106            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
107            proxy_set_header X-Forwarded-Proto $scheme;
108        }
109
110        error_page 500 502 503 504 /50x.html;
111        location = /50x.html {
112            root html;
113        }
114
115        # error_page 404 /404.html;
116        # location = /404.html {
117        #     root html;
118        # }
119    }
120
121    server {
122        listen       443 ssl;
123        server_name  xxx.templechann.com;
124
125        ssl_certificate      /etc/nginx/certs/xxx.templechann.com_bundle.pem;
126        ssl_certificate_key  /etc/nginx/certs/xxx.templechann.com.key;
127
128        ssl_session_cache    shared:SSL:1m;
129        
130        ssl_session_timeout  5m;
131        # 请按照以下协议配置
132        ssl_protocols TLSv1.2 TLSv1.3; 
133        # 请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
134        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; 
135        ssl_prefer_server_ciphers on;
136
137        # 系统临时维护
138        # rewrite ^(.*)$ /maintainace.html break; # break,地址栏 url 不变
139        # location = /maintainace.html {
140        #     root html;
141        # }
142
143        # 反向代理
144        location / {
145            proxy_pass http://twikoo_server;
146            
147            proxy_cache my_cache;
148            proxy_set_header Host $host;
149            proxy_set_header X-Real-IP $remote_addr;
150            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
151            proxy_set_header X-Forwarded-Proto $scheme;
152        }
153
154        error_page 500 502 503 504 /50x.html;
155        location = /50x.html {
156            root html;
157        }
158    }
159
160    server {
161        listen       443 ssl;
162        server_name  climbtw.com www.climbtw.com;
163
164        ssl_certificate      /etc/nginx/certs/climbtw.com_bundle.pem;
165        ssl_certificate_key  /etc/nginx/certs/climbtw.com.key;
166
167        ssl_session_cache    shared:SSL:1m;
168        
169        ssl_session_timeout  5m;
170        #请按照以下协议配置
171        ssl_protocols TLSv1.2 TLSv1.3; 
172        #请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
173        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; 
174        ssl_prefer_server_ciphers on;
175
176        # 系统临时维护
177        # rewrite ^(.*)$ /maintainace.html break; # break,地址栏 url 不变
178        # location = /maintainace.html {
179        #     root html;
180        # }
181
182        # 反向代理
183        location / {
184            proxy_pass http://ctw_server;
185            
186            proxy_cache my_cache;
187            proxy_set_header Host $host;
188            proxy_set_header X-Real-IP $remote_addr;
189            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
190            proxy_set_header X-Forwarded-Proto $scheme;
191        }
192
193        error_page   500 502 503 504  /50x.html;
194        location = /50x.html {
195            root   html;
196        }
197    }
198}
2.1.1.2 容器构建文件

./docker-compose.yml:

 1version: '3'
 2
 3services:
 4  nginx:
 5    image: nginx:alpine-slim
 6    container_name: nginx
 7    restart: always
 8    ports:
 9      - "80:80"
10      - "443:443"
11    volumes:
12      # 配置文件挂载
13      - ./conf/nginx.conf:/etc/nginx/nginx.conf
14      # SSL 证书
15      - ./conf/certs:/etc/nginx/certs
16      # 日志
17      - ./logs:/var/log/nginx
18      # 网站根目录(把你的静态网站放这里)
19      - ./html:/usr/share/nginx/html
20    # 解决 alpine 权限 403 问题
21    user: root
22
23    # 可选:加入时区,保证日志时间正确
24    environment:
25      - TZ=Asia/Shanghai