nginx 入门

# 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
  • 前端项目
server {
    listen  80;
    server_name  XXXXX;
    location / {
        root /data/project/dist
        index index.html;
    }
}
1
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
  • 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
  • 接口反向代理
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
  • 静态资源设置七天强缓存
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
  • 加载其他子 nginx 配置
http {
    include /etc/nginx/conf.d/*.conf
}
1
2
3

# 配置结构

  1. main: nginx 的全局配置,对全局生效
  2. events: 配置影响 nginx 服务器或与用户的网络连接
  3. http: 可以嵌套多个 server,配置代理、缓存,日志定义等绝大多数功能和第三方模块的配置
  4. server: 配置虚拟主机的相关参数,一个 http 中可以有多个 server
  5. location: 配置请求的路由,以及各种页面的处理情况
  6. 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: 服务器端口号
上次更新: 3/29/2024, 6:09:35 PM