nginx 总结

本文深入介绍了Nginx的特性,包括其高性能、免费开源、反向代理和正向代理功能。详细讲解了Nginx的启动、关闭、重启操作,以及配置文件结构和常用配置项,如worker_processes、events、http配置等。同时,文章还涵盖了Nginx的负载均衡策略,如轮询、权重分配和ip_hash。最后,探讨了Nginx在静态代理和动静分离中的应用,以及虚拟主机的配置方法。
摘要由CSDN通过智能技术生成


Nginx 是一个 C语言 开发的,高性能的 web 服务器和反向代理服务器,也可以作为邮件代理服务器
占有内存少,并发处理能力强,官方测试可以支撑5万并发请求
免费开源,收费的商业版,提供了性能优化,宕机等紧急问题处理等技术支持和服务


反向代理 代理内网的服务器接收外网的请求,对外公开的是 nginx 的 ip 和 port, 外部请求并不知道内网服务器的 ip 和 port

正向代理 代理用户请求访问外部资源,用户请求知道被代理的域名

nginx 应用场景
虚拟主机 负载均衡 静态网站 静态代理 动静分离 

目录
nginx 
-conf
//# nginx 配置文件
--nginx.conf

-html
//# nginx 欢迎页面
--index.html

-logs

-sbin
//# nginx 启动程序
--nginx

启动
//# -c 指配置文件
//# cd sbin
./nginx -c /usr/local/nginx/conf/nginx.conf
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

查看
ps -ef | grep nginx
//# master process
//# worker process
master 读配置文件,管理 worker 进程
worker 对请求实际处理

关闭
//# 查 nginx 进程号
ps -ef | grep nginx
//# -QUIT 处理完正在处理的请求,再关闭
//# -TERM 快速关闭
kill -QUIT 主进程 pid
kill -TERM 主进程 pid

重启
./nginx -s reload

检查 nginx 配置文件有没有语法错误,能否正常工作
./nginx -c /usr/local/nginx/conf/nginx.conf -t

查看 nginx 版本
-v 查看 nginx 版本
-V 查看 nginx 版本,编译器版本,配置参数
./nginx -V

----------------------------------------
nginx.conf
----------------------------------------
有3部分组成,基本配置,events 配置,http 配置
---------------------------
基本配置
---------------------------
//# 配置 worker 进程运行用户
user nobody;
//# 配置工作进程数目,一般为 CPU 的数量或2倍
worker_processes 8;
//# 配置全局错误日志及类型
//# 默认为 error
//# [debug | info | notice | warn | error | crit]
#error_log logs/error.log notice;
#error_log logs/error.log info;

//# 配置进程 pid 文件
pid logs/nginx.pid
---------------------------
events 配置
---------------------------
//# 配置工作模式和连接数
events {
   //# 配置每个 worker 进程连接数上限,nginx 总连接数等于 worker_processes * worker_connections
   worker_connections  1024;
}
---------------------------
http 配置
---------------------------
http {
    //# 配置 nginx 支持哪些多媒体类型,可在 conf/mime.types 查看
    include mime.types;
    //# 默认文件类型
    default_type application/octet-stream;

    //# 配置日志格式
    //# log_format main ...........
    //# 配置 access.log 日志及存放路径,并使用上面定义的 main 日志格式
    //# access_log logs/access.log main;

    //# 长连接超时时间,单位是秒
    keepalive_timeout 65;

    //# 开启 gzip 压缩输出
    gzip on;

    //# 配置虚拟主机
    server {
       //# 配置监听端口
       listen 80;
       //# 配置服务名
       //# 通过任何 ip 都可以访问,通过本地也可以访问
       server_name localhost;
       //# 配置字符集
       charset utf-8;
       //# 配置本虚拟主机的访问日志
       access_log logs/access.log main;
       //# 匹配 / 的请求
       location / {
          //# 配置服务器默认网站根目录,nginx 安装主目录下的 html 目录
          root html;
          //# 配置首页文件名称
          index index.html index.htm;
       }
       //# 配置 404 错误页面
       error_page 404 /404.html;
       //# 配置 50x 错误页面
       error_page 500 502 503 504 /50x.html;

       //# = 精确匹配 /50x.html 的请求
       location = /50x.html {
          root html;
       }
    }
}
----------------------------------------
负载均衡
----------------------------------------
将流量均衡的分摊到集群中的多个节点上

硬件 - 价格昂贵,几十万一台
F5 深信服

软件 - 免费开源
nginx haproxy lvs
----------------------------------------

----------------------------------------
nginx 负载均衡
----------------------------------------
配置 nginx.conf
1.配置 http 模块
//# upstream 能对后端服务器做健康检测,转发前端请求时会过滤后端故障机器
//# weight 权重越大,访问机会越多
//# www.myweb.com 为 upstream 的名字,为方便一般用域名
upstream www.myweb.com{
  server 192.168.0.105:9100 weight=3;
  server 192.168.0.106:9100 weight=1;
}
2.配置 server 模块
location /myweb {
    proxy_pass http://www.myweb.com
}
----------------------------------------

----------------------------------------
nginx 常用负载均衡策略
----------------------------------------
1.轮询 默认
每个请求轮流的分配到不同的后端服务器,自动过滤故障节点
upstream www.myweb.com{
  server 192.168.0.105:9100;
  server 192.168.0.106:9100;
}
------------------------
2.权重
每个请求按配置比例分发到不同的后端服务器,权值越大,访问比例越大,用于后端服务器性能不均的情况
upstream www.myweb.com{
  server 192.168.0.105:9100 weight=3;
  server 192.168.0.106:9100 weight=1;
}
------------------------
3.ip_hash
每个请求按访问者 ip 的 hash 值分配,每个客户端固定访问同一台后端服务器,可以解决 session 丢失的问题
upstream www.myweb.com{
  ip_hash;
  server 192.168.0.105:9100;
  server 192.168.0.106:9100;
}
------------------------
4.最少连接
请求被转发到连接数最少的服务器上
upstream www.myweb.com{
  least_conn;
  server 192.168.0.105:9100;
  server 192.168.0.106:9100;
}
----------------------------------------

----------------------------------------
nginx 其他配置
----------------------------------------
配置备用机器,当所有的非 backup 机器 down 的时候,才请求 backup 机器
可用于在访问量低的时间段滚动更新,配置几个节点 backup, 然后 reload 不影响外部请求,更新完再换几个节点
upstream www.myweb.com{
  server 192.168.0.105:9100;
  server 192.168.0.106:9100 backup;
}
----------------------------------------

----------------------------------------
nginx 静态代理
----------------------------------------
nginx 处理静态资源性能更好,效率更高
配置 nginx.conf
----------------------
方式一
匹配文件扩展名
//# ~ 正则匹配
//# 第一个 . 表示任意字符
//# * 表示一个或多个字符
//# \. 斜杠是转义字符
//# | 表示或者
//# $ 表示结尾
//# location 匹配规则,ip:port = root
//# http://192.168.1.105:9100/myweb/image/001.jpg
//# /opt/static/myweb/image/001.jpg
location ~ .*\.(js|css|htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$ {
   root /opt/static;
}
----------------------
方式二
匹配路径
//# xxx/js/xxxx
location ~ .*/(js|css|img|images)$ {
   root /opt/static;
}
----------------------------------------

----------------------------------------
nginx 动静分离
----------------------------------------
动态资源,如 jsp 由 tomcat / jboss 服务器处理
静态资源,如 css, js 等由 nginx 服务器处理
----------------------------------------

----------------------------------------
nginx 虚拟主机
----------------------------------------
把一个服务器虚拟成多个服务器来使用,nginx.conf 中的每一个 server 标签对应一个虚拟主机
----------------------
基于域名的虚拟主机
根据域名来区别不同的虚拟主机,常用于对外提供服务的 web 网站
server {
  
}
----------------------
基于端口的虚拟主机
根据端口来区别不同的虚拟主机,常用于内部网站
----------------------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叫我三师弟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值