1. 命令
- 启动:
./nginx
:直接启动
./nginx -c /usr/local/nginx/conf/nginx.conf
:指定配置文件启动
- 检查 Nginx 配置文件:
./nginx -t
:检查配置文件是否有语法操作
./nginx -t -c /usr/local/nginx/conf/nginx.conf
:显示指定配置文件
- 重载:
- 关闭:
./nginx -s stop
:快速停止
./nginx -s quit
:完整有序的停止,会等待所有请求结束后再关闭服务
2. 配置文件结构
配置项语法为 项名 项值;
,配置文件主要分为四部分:
main
:全局配置,用于配置与具体业务无关的参数
events
:用于配置影响 Nginx 服务与用户之间连接的属性
http
:用于配置 Nginx 的业务功能,包括 http、email 等
server
:必须位于 http
内部,可配置多个,每个用于配置一个主机,其中:
listen
指定监听的端口号
server_name
指定主机名
location
配置请求的路由,以及各种页面的处理情况
3. 配置文件实战
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
| user administrator administrators; #配置用户或者组,默认为 nobody nobody worker_processes 2; #允许生成的进程数,默认为1 pid /nginx/pid/nginx.pid; #指定 nginx 进程运行文件存放地址 error_log log/error.log debug; #制定全局日志路径、级别
events { worker_connections 1024; #最大连接数,默认为512 accept_mutex on; #设置网路连接序列化,防止惊群现象发生,默认为 on multi_accept on; #设置一个进程是否同时接受多个网络连接,默认为 off }
http { include mime.types; #文件扩展名与文件类型映射表 include /home/data/*.conf; #子配置文件路径 default_type application/octet-stream; #默认文件类型,默认为 text/plain sendfile on; #允许 sendfile 方式传输文件,默认为 off sendfile_max_chunk 100k; #每个进程每次调用传输量最大值,默认为 0,无限制 keepalive_timeout 65; #连接超时时间,默认为75s
# add_header X-Content-Type-Options nosniff; # 设置全局请求头
upstream my_svr { server 127.0.0.1:7878; server 192.168.10.121:3333 backup; #热备 }
error_page 404 https://www.baidu.com; #错误页
server { listen 4545; #监听端口 server_name localhost; #监听地址 location ~*^.+$ { #请求的路由,正则匹配,~为区分大小写,~*为不区分大小写 #root /home/data; #根目录 #index index.html index.htm; #设置默认页 proxy_pass http://my_svr; #请求转向mysvr 定义的服务器列表 proxy_set_header Host $host:$server_port; # 设置自定义header deny 127.0.0.1; #拒绝的ip allow 172.18.5.54; #允许的ip } } }
|
4. FAQ
1. root
与 alias
的区别
root
:直接拼接 root + location
alias
:是用 alias
替换 location
1 2 3 4 5
| # 当请求 /aa/index.html 时,不同配置返回不同 location /aa/ { root /data/my/; # 返回 /data/my/aa/index.html alias /data/my/; # 返回 /data/my/index.html }
|
2. location
proxy_pass
配置代理地址后,转发地址
- 有目录(包括
/
):代理地址 + url 目录部分去除 location 匹配目录
- 无任何地址:
代理地址 + url 目录部分
1 2 3 4 5 6 7 8 9
| # 测试地址: http://127.0.0.1:80/api/upload,实际访问地址与配置有关 location /api/ { proxy_pass http://127.0.0.1:8080/; # http://127.0.0.1:8080/upload proxy_pass http://127.0.0.1:8080; # http://127.0.0.1:8080/api/upload } location /api { proxy_pass http://127.0.0.1:8080/; # http://127.0.0.1:8080//upload proxy_pass http://127.0.0.1:8080; # http://127.0.0.1:8080/api/upload }
|