nginx 入门
AprilTong
# nginx 入门
# 介绍
nginx 是一款轻量级的 HTTP 服务器,采用事件驱动的异步非阻塞处理方式框架,让其具有极好的 IO 性能,时常用于服务端的反向代理和负载均衡。具有高并发、高可靠、高性能等优点并且支持热部署。
# 常用命令
- 启动 nginx
nginx
1
- 重启 nginx
nginx -s reopen
1
- 显示 nginx 信息
nginx -t
1
- 强制停止
nginx -s stop
1
- 安全退出
nginx -s quit
1
- 重启 nginx
nginx -s reload
1
# 示例
- node 项目
server {
listen 80;
server_name XXXXX;
location / {
proxy_pass http://127.0.0.1:7000;
}
}
1
2
3
4
5
6
7
2
3
4
5
6
7
- 前端项目
server {
listen 80;
server_name XXXXX;
location / {
root /data/project/dist
index index.html;
}
}
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
- 支持 websocket 服务
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade
proxy_set_header Connection $connection_upgrade
1
2
3
4
2
3
4
- html 设置 history 路由模式
location / {
index index.html index.htm;
proxy_set_header Host $host;
# 重要的就是这里
try_files $uri $uri/ /index.html
}
1
2
3
4
5
6
2
3
4
5
6
- 接口反向代理
location ^~ /api/ {
# 跨域处理 设置头部域名
add_header Access-Control-Allow-Origin *;
# 跨域处理 设置头部方法
add_header Access-Control-Allow-Methods: 'GET,POST,DELETE,OPTIONS,HEAD';
# 改写路径
rewrite ^/api/(.*)$ /$1 break;
proxy_pass http://XXX
proxy_set_header Host $http_host
}
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
- 静态资源设置七天强缓存
location ~* \.(?:css(\.map)?|js(\.map)?|gif|svg|jfif|ico|cur|heic|webp|tiff?|mp3|m4a|aac|ogg|midi?|wav|mp4|mov|webm|mpe?g|avi|ogv|flv|wmv)$ {
# 静态资源设置七天强缓存
expires 7d;
access_log off;
}
1
2
3
4
5
2
3
4
5
- 加载其他子 nginx 配置
http {
include /etc/nginx/conf.d/*.conf
}
1
2
3
2
3
# 配置结构
- main: nginx 的全局配置,对全局生效
- events: 配置影响 nginx 服务器或与用户的网络连接
- http: 可以嵌套多个 server,配置代理、缓存,日志定义等绝大多数功能和第三方模块的配置
- server: 配置虚拟主机的相关参数,一个 http 中可以有多个 server
- location: 配置请求的路由,以及各种页面的处理情况
- upstream: 配置后端服务器具体地址,负载均衡配置必须的
# 内置变量
- $host: 请求信息中的 Host,如果请求中没有 Host 行,则等于设置的服务器名
- $request_method: 客户端请求方法,如 GET、POST
- $remote_addr: 客户端的IP地址$args 请求中的参数
- $content_length: 请求头中的 content—length 字段
- $http_user_agent: 客户端 agent 信息
- $http_cookie: 客户端 cookie 信息
- $remote_port:客户端的端口
- $server_protocol: 请求使用的协议,如 HTTP/1.0、HTTP1.1
- $server_addr: 服务器地址
- $server_name: 服务器名称
- $server_port: 服务器端口号