nginx使用教程
1.什么是nginx?
nginx [engine x] 是 HTTP 和反向代理服务器、邮件代理服务器和通用 TCP/UDP 代理服务器,最初由 Igor Sysoev 编写。 很长一段时间以来,它一直在许多负载很重的俄罗斯网站上运行,包括 Yandex、Mail.Ru、VK 和 Rambler。 根据 Netcraft 的数据,2022 年 5 月,nginx 服务或代理了 21.67% 最繁忙的网站。以下是一些成功案例:Dropbox、Netflix、Wordpress.com、FastMail.FM。
2.如何部署安装nginx
1 2
| sudo apt install -y nginx sudo yum install -y nginx
|
3.nginx的结构
3.1.nginx的启动方式
nginx一般以守护进程启动,一个nginx服务至少包含一个master进程和一个work进程,master为nginx的守护进程用于管理work进程,和work进程为nginx接受请求后实际处理请求的进程
graph LR;
1((master nginx守护进程))-->2((work1 工作进程1))
1-->3((work2 工作进程2))
1-->4((work3 工作进程3))
3.2.nginx的请求拦截器(重点)
nginx的location请求拦截器,用于匹配连接请求,匹配成功后由该定义的资源路径以及返回方式处理并响应
nginx的location请求的匹配方式有以下几种
- 1.完全匹配
- 2.非正则匹配
- 3.正则匹配
- 4.普通匹配
优先级自上而下
1.精确匹配
1 2 3 4 5
| location = /get{ root html; return 200 "hello you get!"; }
|
2.非正则匹配
1 2 3 4 5
| location ^~{ return 200 "hello,world"; }
|
3.正则匹配
1 2 3 4 5 6 7
| location ~ \*.php$/ { return 200 "hello,location"; } location ~* \*.php$ { return 200 " "; }
|
4.普通匹配(最长字符匹配)
1 2 3
| location /get { root html; }
|
3.3.nginx的日志文件以及错误重定向
1 2 3 4
| access_log logs/access.log notice format; error_log logs/error.log error;
error_page 404...(错误代码) /50x.html(重定向的location的地址)(也可以自定一个重定向的url)
|
4.nginx配置文件
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 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
|
user nobody;
daemon on;
worker_processes 1;
error_log logs/error.log notice;
{ worker_connections 1024; use epoll; }
http { include mime.types; default_type application/octet-stream; log_format main "$remote_addr:$time_local:$remote_user:$request:$status $body_bytes_sent"; send_file on; tcp_nopush on; tcp_nodelay on; keep_alive_timeout 65; gzip on; gzip_types application/javascript; gzip_comp_level 1; gzip_vary on gzip_buffers number size; gzip_http_version 1.0|1.1; gzip_min_length 1024; valid_referer none|blocked|server_names|string....//指定是否有效的referercd gzip_proxied off|expired|no-cache|no-store|private|no_last_modified|no_etag|auth|any; server { listen 80; server_name localhost; location /{ root html; index index.html index.htm; } } }
|