nginx基本使用

nginx logo

nginx是俄罗斯人编写的轻量级http服务器,具有如下特点:

1. 安装

// 在mac环境下
brew install nginx

安装后,mac下默认的配置位于 /usr/local/etc/nginx

2. 配置

nginx的命令分为简单命令、块级命令,基本格式 command paramter;

nginx的配置分为四部分:全局配置(main)、主机配置(server)、上游服务器配置(upstream)、location配置。

2.1 全局配置

与具体业务无关的参数,例如工作进程、身份等信息。

user www www; // nginx子进程运行的用户和用户组
work_process 10; // nginx子进程的个数
error_log path; // 错误日志存放的地址
pid path; // 主进程pid存放地址

2.2 events

用于设置服务端与用户的网络连接

events {
  worker_connections: 1024; // 最大连接数
}

2.3 http

http {
  include mime.type; // 文件拓展名与文件类型映射表
  gzip on;
  server {
    listen 5000;
    server_name li.com;
    location pathname {
      ...
    }
    location pathname {
      ...
    }
  }
}

2.4 server配置

  server {
    server ip/host/upstream; // 可以支持多个域名
    index aa.html; //首页的配置
    error_page 404 /error.html; // 错误页面的重定向
    location pathname {

    }
  }
upstream name {
  server ip/host [params]; // params可能为weight(指定权重)、backup(作为备用服务)
  ...
}

关于upstream的集中方式:

2.5 location配置

location /z-demo {
  root /a; // 如果访问http://a.com/z-demo/test.png => /a/z-demo/test.png
  alias /a; // 如果访问http://a.com/z-demo/test.png => /a/test.png
  deny ip; // 拒绝的ip地址
  allow ip; // 白名单ip
}

location /egg {
  proxy_pass http://127.0.0.1:3000; // 代理到的地址
  rewirte ~/egg(.*)/ /$1 break; // 修改映射规则
  proxy_set_header Test ${constant or variable}; //可以往代理请求中添加头部信息
}

关于proxy_set_header:

关于rewrite的设置方法

4. 命令行操作

nginx -c nginx.config // 启动nginx服务

nginx -t // 测试配置文件的有效性

nginx -s stop // 停止nginx服务

nginx -s quit // 以一种优雅的方式退出,主要是考虑此时可能还有请求需要处理

nginx -s reload // 重新启动服务

nginx -s reopen // 重新打开log

5. 遇到的问题

5.1 location配置后,访问返回403?

可能性的原因:

6. 参考