Nginx 笔记
Nginx 是高性能的 HTTP 和反向代理的 web 服务器,处理高并发能力是十分强大的,能经受高负载的考验,能支持高达 50000 个并发连接数。
一、正向代理
正向代理,代理客户端请求。比如本地无法访问外网,需要挂 VPN 才能访问外网。
二、反向代理
反向代理,代理服务器,对客户端隐藏了真实服务器的 IP 地址。对于客户端来说,反向代理服务器等于真实的服务器。
三、负载均衡
Nginx 代理多台服务器,从原来的所有请求分发到一个服务器,变成分发到多台服务器。将负载分发到多台服务器,就是负载均衡。

四、动静分离
静态资源、动态资源分开部署,Nginx 代理这两台资源服务器。

五、Nginx 常用命令
nginx -v #查看 Nginx版本号
nginx #启动 Nginx
nginx -s stop #关闭 Nginx
nginx -s reload #重新加载配置文件,不需要重启 Nginx
六、Nginx 配置
6.1 常规反向代理
#1.全局块,配置影响 Nginx 的全局参数
#运行用户
#user nobody;
#工作进程,通常设置成和cpu的数量相等,值越大处理并发能力越强
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
#2.events块,主要影响 Nginx 服务器与用户的网络连接
events {
#use epoll; #epoll是多路复用IO(I/O Multiplexing)中的一种方式,仅用于linux2.6以上内核,可以大大提高nginx的性能
worker_connections 1024; #单个 woker_process 支持的最大并发连接数
}
#3.http块
http {
#3.1 http全局块
include mime.types; #设定mime类型,类型由mime.type文件定义
default_type application/octet-stream;
#设定日志格式
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
#sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,
#对于普通应用,必须设为 on,
#如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,以平衡磁盘与网络I/O处理速度,降低系统的uptime.
sendfile on;
#tcp_nopush on;
#连接超时时间
keepalive_timeout 65;
#开启gzip压缩
#gzip on;
#3.2 server块
server {
#3.2.1 server全局块
listen 80; #监听端口
server_name xx.24.108.xx; #代理服务名
#定义服务器的默认网站根目录位置
root html;
#charset koi8-r;
#设定本虚拟主机的访问日志
#access_log logs/host.access.log main;
#3.2.2 location块
#默认请求
location / {
proxy_pass http://17xx.24.108.xx898; #反向代理具体的 URL 地址
#定义首页索引文件的名称
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
# 定义错误提示页面
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
location = /index0.html {
}
#禁止访问 .html 文件
location ~ /.html {
deny all;
}
}
}
6.2 负载均衡
#1.全局块,配置影响 Nginx 的全局参数
#运行用户
#user nobody;
#工作进程,通常设置成和cpu的数量相等,值越大处理并发能力越强
worker_processes 1;
#2.events块,主要影响 Nginx 服务器与用户的网络连接
events {
#use epoll; #epoll是多路复用IO(I/O Multiplexing)中的一种方式,仅用于linux2.6以上内核,可以大大提高nginx的性能
worker_connections 1024; #单个 woker_process 支持的最大并发连接数
}
#3.http块
http {
#3.1 http全局块
include mime.types; #设定mime类型,类型由mime.type文件定义
default_type application/octet-stream;
#sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,
#对于普通应用,必须设为 on,
#如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,以平衡磁盘与网络I/O处理速度,降低系统的uptime.
sendfile on;
#tcp_nopush on;
#连接超时时间
keepalive_timeout 65;
#开启gzip压缩
#gzip on;
#负载均衡配置
upstream myserver{
#策略:默认轮询; weight; ip_hash; least_conn; fair; hash $request_uri;
server xx.24.108.xx:9898 weight=1;
server 17xx.24.108.xx899 weight=2;
}
#3.2 server块
server {
#3.2.1 server全局块
listen 80; #监听端口
server_name 172.xx.24.108.xx代理服务名
#定义服务器的默认网站根目录位置
root html;
#3.2.2 location块
#默认请求
location / {
proxy_pass http://myserver; #反向代理具体的 URL 地址
#定义首页索引文件的名称
index index.html index.htm;
}
# redirect server error pages to the static page /50x.html
# 定义错误提示页面
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
location = /index0.html {
}
}
}
Nginx 负载均衡的 6 种策略:轮询(默认),weigth(权重),ip_hash(根据 IP 分配),least_conn(最少连接),fair(第三方),url_hash(第三方)。
轮询: nginx 自带策略,将每个请求按时间顺序分配到不同的后端服务器
weigth: nginx 自带策略,权重越高,被分配的次数越多。
ip_hash: nginx 自带策略,基于客户端的 IP 进行分配,确保同一个客户端的请求一直发送到相同的服务器,可以解决 session 不能跨服务器的问题。
least_conn: nginx 自带策略,把请求转发给连接数较少的后端服务器。
fair: 按照服务器端的响应时间来分配请求,响应时间短的优先分配。
url_hash: 该策略按访问 url 的 hash 结果来分配请求,使每个 url 定向到同一个后端服务器,需要配合缓存用。
6.3 动静分离
#1.全局块,配置影响 Nginx 的全局参数
#运行用户
#user nobody;
#工作进程,通常设置成和cpu的数量相等,值越大处理并发能力越强
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
#2.events块,主要影响 Nginx 服务器与用户的网络连接
events {
#use epoll; #epoll是多路复用IO(I/O Multiplexing)中的一种方式,仅用于linux2.6以上内核,可以大大提高nginx的性能
worker_connections 1024; #单个 woker_process 支持的最大并发连接数
}
#3.http块
http {
#3.1 http全局块
include mime.types; #设定mime类型,类型由mime.type文件定义
default_type application/octet-stream;
#设定日志格式
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
#sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,
#对于普通应用,必须设为 on,
#如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,以平衡磁盘与网络I/O处理速度,降低系统的uptime.
sendfile on;
#tcp_nopush on;
#连接超时时间
keepalive_timeout 65;
#开启gzip压缩
#gzip on;
#负载均衡配置
#upstream myserver{
#策略:默认轮询; weight; ip_hash; least_conn; fair; hash $request_uri;
#server xx.24.108.xx:9898 weight=1;
#server 17xx.24.108.xx899 weight=2;
#}
#3.2 server块
server {
#3.2.1 server全局块
listen 80; #监听端口
server_name 172.xx.24.108.xx代理服务名
#定义服务器的默认网站根目录位置
#root html;
#charset koi8-r;
#设定本虚拟主机的访问日志
#access_log logs/host.access.log main;
#3.2.2 location块
#默认请求
location / {
proxy_pass http://172.24xx.24.108.xx #反向代理具体的 URL 地址
#定义首页索引文件的名称
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
# 定义错误提示页面
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
location = /index0.html {
}
location = /ii.html {
root html;
autoindex on;
}
location = /www {
root html;
autoindex on; #是nginx开启目录浏览下载功能
}
}
}


浙公网安备 33010602011771号