nginx基础学习笔记
nginx特点
nginx是基于异步框架的轻量级/高性能的web服务器,也可作为反向代理服务器/缓存服务器/电子邮件代理服务器等。
- 优点:
高并发量:基于epoll/kqueue模型开发,支持高并发量,官方说其支持高达5W并发连接数的响应。
内存消耗少:善于处理静态文件,相较于其他web(如apache),占用更少的内存及资源。
简单稳定:配置简单(一个conf文件),运行简单(NGINX命令)
模块化程度高:功能模块插件化设计,可以自由配置相应的功能。
支持Rwrite重写规则:能够根据域名、URL等请求关键点,实现定制化的高质量分发。
低成本:NGINX的负载均衡功能强大而且开源,相较于几十万的硬件负载均衡器成本低。
支持多系统:NGINX代码完全用C语言编写,可以在各系统上编译使用。 - 缺点:
动态处理能力差:NGINX善于处理静态文件,但是处理动态页面相较于apache之类重量级web软件能力稍逊。
rewrite弱:虽然NGINX支持rewrite功能,但相比apache等较弱。
nginx命令
# 启动停止命令,三种方式,注意用哪种方式启动,就用哪种方法停止。
systemctl start|stop|reload|status|... nginx
/etc/init.d/nginx start|stop|reload|status|...
/usr/sbin/nginx -s start|stop|reload|status|...
#
nginx -V # 查看nginx所有配置信息
nginx -v # 查看nginx版本信息
# 检查配置文件语法
nginx -t [-c xxx.conf]
nginx配置
nginx 相关目录
这些路径是使用系统命令下载nginx的时候默认所在的路径,路径可以自定义。
工作目录:/etc/nginx
执行文件:/usr/sbin/nginx
日志目录:/var/log/nginx
启动文件:/etc/init.d/nginx
web目录:/var/www/html/
配置文件结构
默认配置文件:/etc/nginx/nginx.conf
文件结构:
全局配置段
http配置段
server配置段 # 项目或应用
location配置段 # url配置
全局配置段
user : 工作用户
worker_process : 工作进程数(一般情况下设置和机器cpu核数一样)
pid : nginx启动之后的服务的进程id。/run/nginx.pid
event : 和worker_process有关。
worker_connections每个进程的最大连接数
use: 使用的内核模型,一般选择epoll。
http配置段
部分常见配置项:
include mime.types; # 文件拓展名与文件类型映射表
default_type application/octet-stream # 默认文件类型
sendfile on; # 开启高效文件传输模式
autoindex on; # 开启目录列表访问,适合下载服务器,默认关闭
tcp_nopush on; # 防止网络阻塞
tcp_nodelay on; # 防止网络阻塞
keepalive_timeout 120; # 长链接超时时间,单位是秒
gzip on; # 开启gzip压缩输出
server
location
server、location配置段
server{
listen 80; # 此server监听的ip和port端口号,当ip和port匹配时才进行下一步匹配。listen有多种ip和port的组合方式。
# listen 601; # 指定端口,默认ip0.0.0.0. 0.0.0.0:601
# listen 192.168.0.20:601; # 指定ip和port
# listen 192.168.0.20; # 指定ip,默认port为80 192.168.0.20:80
root /var/www/html; # 静态html所在目录
index index.html [app.index.html]; # 指定首页,可以配置多个,会依次查找。
# root和index也可以写在Location中。
# root配合index使用。
location / {
root /var/www/html;
index index.html;
}
# alias配合index使用。
# location /test {
# alias /var/www/html;
# index index.html;
# }
# 需注意:如果location匹配 / 路径的时候,使用root即可。如果匹配 /test 这种路径时,需要使用alias,如果还使用root,/test 会拼接到root指定的路径中去:如/var/www/html/test。
server_name www.aaa.com; # 配置之后可以通过域名访问。当有多个server监听同一个Port时,通过此参数标识区分。
}
location配置段匹配优先级关系:精确匹配 > location完整路径 > 优先匹配 > 正则匹配 > Location部分路径 > 通用匹配
| 类型 | 含义 | 匹配方式 | 优先级 | 样式 |
|---|---|---|---|---|
| =/路径 | 精确匹配 | 前缀 | 1 | location = /image {} |
| ^~ | 优先匹配 | 前缀 | 2 | location ^~/page {} |
| ~ | 正则(大小写敏感) | 正则符号 | 3 | location ~.(jpe?g)$ {} |
| ~* | 正则(大小写不敏感) | 正则符号 | 3 | location ~*.(jpe?g)$ {} |
| / | 通用匹配 | 前缀 | 4 | location / {} |
| <路径> | 前缀匹配 | 前缀 | . | location /index {} |
try_files 的使用:进行异常处理或临时跳转(仅在资源内部)
server {
listen 80;
location / {
root /var/www/html;
index index.html;
try_files $uri $uri/ =404; # 如果匹配到location后可以找到响应的资源,则正常返回,否则返回404
# try_files $uri @xxxxname; # 临时跳转
}
location @xxxxname {
root /var/www/html;
index index12.html;
}
}
location临时跳转:302跳转,可以跳转至内部或外部资源。
server {
listen 80;
location / {
return 302 http://www.baidu.com; # 外部跳转
# return 302 /login; # 内部跳转
}
location /login {
return 400;
}
}
location 访问控制
server {
listen 80;
location / {
deny 192.168.0.20;
allow 192.168.0.22;
allow 192.168.0.0/16;
deny all;
}
}
location目录列表(多用于下载服务器时使用)
server {
listen 80;
location / {
root /etc/medim
autoindex on;
# autoindex_exact_size off; # 设定索引时文件的大小单位,默认为on 开启
# autoindex_localtime on; # 文件信息时间显示为本地时间,默认为off。
}
}
反向代理配置
# nginx服务器192.168.0.10
server {
listen 6001;
location / {
proxy_pass http://192.168.0.20:8001;
}
}
# 真实服务器192.168.0.20
server {
listen 8001;
location / {
root /var/www/html;
index index12.html;
}
}
负载均衡配置
# 负载均衡配置
upstream backend {
# server backend1.example.com weight=5;
# server backend2.example.com:8080;
# server unix:/tmp/backend3;
server 192.168.0.20:8001;
server 192.168.0.21:8001;
# 常见的调度算法有三种:
# 1.默认的转发规则,轮询
# server 192.168.0.20:8001;
# server 192.168.0.21:8001;
# 2.加权轮询
# server 192.168.0.20:8001 weight=3;
# server 192.168.0.21:8001;
# 3.ip_hash:请求第一次落到哪台服务器,后续请求全部由该台服务器提供。
# ip_hash;
# server 192.168.0.20:8001;
# server 192.168.0.21:8001;
# 其他常用设置
# server 192.168.0.20:8001 down; # 当前server不参与负载均衡
# server 192.168.0.20:8001 backup; # 其他机器全部down掉或满载时使用此服务
}
# nginx服务器192.168.0.10
server {
listen 6001;
location / {
proxy_pass http://backend;
}
}
# 真实服务器192.168.0.20
server {
listen 8001;
location / {
root /var/www/html;
index index12.html;
}
}
# 真实服务器192.168.0.21
server {
listen 8001;
location / {
root /var/www/html;
index index12.html;
}
}

浙公网安备 33010602011771号